【问题标题】:Display list of images from sd card显示来自 sd 卡的图像列表
【发布时间】:2011-04-03 17:07:37
【问题描述】:

我正在尝试向用户显示 SD 卡上的图像列表,允许他们选择多个图像,然后将这些选定的图像存储在一个数组中。你能帮我解决这个问题吗?

公共类 selectimages 扩展了 Activity {
//---要显示的图像--- 整数 [] imageIDs = { R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4, R.drawable.a_5, R.drawable.a_6, R.drawable.a_7
};

@Override    
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.selectimages);

    ListView listview = (ListView) findViewById(R.id.listview);
    listview.setAdapter(new ImageAdapter(this));

    listview.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView parent, 
        View v, int position, long id) 
        {                
            Toast.makeText(getBaseContext(), 
                    "pic" + (position + 1) + " selected", 
                    Toast.LENGTH_SHORT).show();
        }
    });        
}

public class ImageAdapter extends BaseAdapter 
{
    private Context context;

    public ImageAdapter(Context c) 
    {
        context = c;
    }

    //---returns the number of images---
    public int getCount() {
        return imageIDs.length;
    }

    //---returns the ID of an item--- 
    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    //---returns an ImageView view---
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(5, 5, 5, 5);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(imageIDs[position]);
        return imageView;
    }
}    

}

【问题讨论】:

  • 我能够将图像从 sd 卡加载到 gridview,但我想不出一种方法来允许选择多个图像。所以现在我尝试使用 listview 加载它们,这就是我遇到问题的地方。
  • 如果您发布的代码没有按照您的意愿执行,并解释您希望它执行的操作,那么回答这个问题会更容易。您是否在进行多项选择时遇到问题,甚至根本无法将它们加载到列表视图中?
  • 我能够让这段代码工作并显示列表视图中文件夹中的图像。
  • 对不起。使用源代码编辑原始消息。

标签: android


【解决方案1】:

看,获取 Listview 的检查值:previous question

达伦·罗宾斯写道:

int len = listView.getCount();
SparseBooleanArray checked = listView.getCheckedItemPositions();
for (int i = 0; i < len; i++)
 if (checked.get(i)) {
  String item = cont_list.get(i);
  /* do whatever you want with the checked item */
 }

【讨论】:

    【解决方案2】:

    您可以使用自定义列表视图布局将这些图像加载到列表视图中,然后在每个图像旁边放置一个复选框......每当用户勾选一个复选框时,这意味着他选择了列表视图那一行上的图像。这就是你想要的吗?

    【讨论】:

    • 是的,这就是我要找的。我还想将这些选择存储在一个数组中。我似乎无法在这里发布我的源代码。我之前做的是从图像文件夹读取到列表视图,但我想从 sd 卡读取并允许多选。
    • 那我回答你的问题了吗?或者您需要进一步的帮助?
    • 嗯,是的,你确实回答了我的问题。但我不确定如何编码才能正常工作。
    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多