首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ListView项目(ImageView)显示给另一个活动

将ListView项目(ImageView)显示给另一个活动
EN

Stack Overflow用户
提问于 2013-12-23 03:14:57
回答 3查看 1.4K关注 0票数 0

我有一个带有ImageView和textView的简单列表视图。

现在,每当我单击我的listItem时,我都需要将ImageView发送到另一个活动。

我已经读了很多这样的答案,但找不到更好的解决方案。

这是我的lisview_items.xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:orientation="vertical">
    <ImageView 
        android:id="@+id/photo"
        android:layout_width="150dip"
                android:layout_height="100dip"
        android:paddingRight="15dp"
        android:paddingLeft="15dp"/>
    </LinearLayout>
    <RelativeLayout
    android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:orientation="vertical"
               android:layout_marginLeft="160dp"
               android:layout_marginTop="10dp"
               android:descendantFocusability="blocksDescendants">
    <TextView android:id="@+id/name"
        android:textSize="14sp" 
        android:textStyle="bold" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/>
</RelativeLayout>
<RelativeLayout>

CustomAdapter:

代码语言:javascript
运行
复制
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.item_details_view, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName());
             holder.itemImage.setImageResource(imgid[itemDetailsrrayList.get(position).getImageNumber() - 1]);
}

MyListView OnClick:

代码语言:javascript
运行
复制
 ArrayList<ItemDetails> image_details = GetSearchResults();

    final ListView lv1 = (ListView) findViewById(R.id.list);
    lv1.setAdapter(new ItemListBaseAdapter(this, image_details));


    OnItemClickListener itemClickListener = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

            Object o = lv1.getItemAtPosition(position);
            ItemDetails obj_itemDetails = (ItemDetails)o;
            Toast.makeText(ListViewImagesActivity.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();
            ProductName =obj_itemDetails.getName();
       }  
    };

我正在使用共享首选项来发送产品名称,如下所示,它工作得非常好

代码语言:javascript
运行
复制
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
data.edit().putString("SelectedProduct", ProductName).commit();

以类似的方式,我如何发送图像,因为它在ArrayList中,如above..Can所示,任何人给我一些关于这种用法的说明

EN

回答 3

Stack Overflow用户

发布于 2013-12-23 03:28:29

您可以将图像路径存储在ItemDetails对象上,就像处理名称一样。然后,您可以通过Intent将路径传递到新的Activity

如果图片在编译时可用,您可以像Gabe所说的那样传递对其id的引用,而不是指向其位置的路径。

票数 0
EN

Stack Overflow用户

发布于 2013-12-23 03:30:02

如果您真的要切换到该活动,则可以在intent附加文件中传递图像的资源id,然后在那里使用getResources().getDrawable(ID)

票数 0
EN

Stack Overflow用户

发布于 2013-12-23 03:36:47

你应该做到以下几点:

代码语言:javascript
运行
复制
final ArrayList<ItemDetails> image_details = GetSearchResults();

final ListView lv1 = (ListView) findViewById(R.id.list);
lv1.setAdapter(new ItemListBaseAdapter(this, image_details));


OnItemClickListener itemClickListener = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

       ItemDetails selectedItem = image_details.get(position);
       //To-DO get you data from the ItemDetails Getter
      // selectedItem.getImage() or selectedItem.getName() .. etc 
      // the  send the data using intent when opening another activity 
      Intent intent = new Intent(CurrentActivity.this, DisplayImageActivity.class);
      intent.putExtra("image",selectedItem.getImage());
      intent.putExtra("name",selectedItem.getName()); 
      startActivty(intent);

   }  
};

然后在OnCreate中的DisplayImageActivity中

代码语言:javascript
运行
复制
@Override
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      Intent i = getIntent();
      String image = i.getStringExtra("image");
      String name = i.getStringExtra("name");

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20733052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档