在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动

Posted

技术标签:

【中文标题】在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动【英文标题】:Send static image and text of list item to the next activity while click on list activity in android 【发布时间】:2011-09-25 00:12:13 【问题描述】:

我有一个列表活动,我在其中连续显示图像和文本。

图像是静态的,它们被放置在可绘制文件夹中。

我想在单击列表项时在下一个活动中打印图像和文本。我可以成功发送下一个活动的文本视图。但我发现很难将图像发送到下一个窗口。因为这些都是静态的。

谁能帮我解决这个问题。提前致谢。

      public class Myimage extends ListActivity 

        private LayoutInflater mInflater;
        static Vector<RowData> data = new Vector<RowData>();
        RowData rd;
        static boolean fromCategory = false;
        static final String[] title = new String[] 
                "One", "Two", "Three ";

        private Integer[] img = 
          R.drawable.i,R.drawable.im,R.drawable.ima;
        @Override
        public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mInflater = 

(LayoutInflater) getSystemService(
    Activity.LAYOUT_INFLATER_SERVICE);

    for(int i=0;i<title.length;i++)
    try 
        rd = new RowData(i,title[i]);
         catch (Exception e) 
            e.printStackTrace();
       
       data.add(rd);
    
       CustomAdapter adapter = new CustomAdapter(this, R.layout.list,
                                         R.id.title, data);
       setListAdapter(adapter);
       getListView().setTextFilterEnabled(true);

    // This is the List Item Click method which i should work to send the image on next activity.




    public void onListItemClick(ListView parent, View v, int position,
                long id)  
            Intent intent = new Intent(this,Second.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);






         
    public class RowData  

               protected int mId;
               protected String mTitle;

               RowData(int id,String title)
               mId=id;
               mTitle = title;

            
               public void setTitle(String title) 
                this.mTitle = title.trim();
            

               public String getTitle() 
                return mTitle;
            
               public void setId(int i) 
                   this.mId=i;
                   
               public int getId()
                   return mId;
               


               @Override
               public String toString() 
                       return mId+" "+mTitle;
               
        




          private class CustomAdapter extends ArrayAdapter<RowData> 
          public CustomAdapter(Context context, int resource,
                                int textViewResourceId, List<RowData> objects)                
         super(context, resource, textViewResourceId, objects);
        
              @Override
               public View getView(int position, View convertView, ViewGroup parent)    
               ViewHolder holder = null;
               TextView title = null;

               ImageView i11=null;
               RowData rowData= getItem(position);
               if(null == convertView)
                    convertView = mInflater.inflate(R.layout.list, null);
                    holder = new ViewHolder(convertView);
                    convertView.setTag(holder);
         
                     holder = (ViewHolder) convertView.getTag();
                     title = holder.gettitle();
                     title.setText(rowData.mTitle);

                     i11=holder.getImage();
                     i11.setImageResource(img[rowData.mId]);
                     return convertView;
        
                    private class ViewHolder 
                    private View mRow;
                    private TextView title = null;

                    private ImageView i11=null; 
                    public ViewHolder(View row) 
                    mRow = row;
         
                 public TextView gettitle() 
                     if(null == title)
                         title = (TextView) mRow.findViewById(R.id.title);
                        
                    return title;
                      

                public ImageView getImage() 
                     if(null == i11)
                          i11 = (ImageView) mRow.findViewById(R.id.img);
                                              
                        return i11;
                
             
            

【问题讨论】:

对于未来的用户,我正在编写我在代码中所做的解决它的内容如下:在第一个活动中,我写了 public void onListItemClick(ListView parent, View v, int position, long id) Intent意图=新意图(Myimage.this,Second.class);意图.setFlags(意图.FLAG_ACTIVITY_NEW_TASK); RowData rd = data.get(position); String temp = rd.getTitle()+"splitter"+img[position]; intent.putExtra("medata", temp);开始活动(意图); 在第二个活动中,我写道:捆绑 extras = getIntent().getExtras(); String tempArr = extras.getString("medata");字符串 arr[] = tempArr.split("splitter"); int aInt= Integer.parseInt(arr[1]); ImageView 图像 = (ImageView)this.findViewById(R.id.imageView1); image.setImageResource(aInt); TextView tv=(TextView)findViewById(R.id.textView1); tv.setText(arr[0]);它的工作。 【参考方案1】:

您应该使用 Bundle 类来发送文本和图像。我建议你发送 imageid(R.id.imageID) 而不是发送到孔 ImageView。

  //Use It for setting value of Bundle variable 
  Intent intent = new Intent(CourtDetailActivity.thisDrivingDirection.class);
  intent.putExtra("CourtId", courtId);
  startActivity(intent);
   //Use It for geting value of Bandle variable 
   Bundle extras = getIntent().getExtras();
   courtId = extras != null ? extras.getString("ImageId") : "";

     //You just copy and past given blow code in your code
     public void onListItemClick(ListView parent, View v, int position,
            long id)  
        Intent intent = new Intent(this,Second.class);

       intent.putExtra("ImageId", ""+img[position]);
        startActivity(intent);

     

希望对你有帮助

【讨论】:

DynamicMind ,你建议我发送 Image id 。但是我怎样才能获得图像 ID。从 listview 适配器。在我的实践中,我将图像 id 存储在一个整数数组中。当我调用 Rowdata 类的 getId 方法时,它返回一个数值。我是android的初学者。请做一些必要的帮助。

以上是关于在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动的主要内容,如果未能解决你的问题,请参考以下文章

在 android 中单击按钮时将列表视图中的选中项目转移到另一个列表视图

SwiftUI:如何让列表视图中的图像与列表项的操作不同?

Android:通过 SimpleAdapter 在 imageview 中显示图像

如何将单击的列表项值传递给另一个活动?

单击时将所有项目从列表视图转移到文本视图

在 Android Studio 中向列表视图添加自定义行