【问题标题】:Android list view add valueAndroid列表视图增值
【发布时间】:2012-09-10 17:45:43
【问题描述】:

在 Android 列表视图中,我们可以像在 Web 编程中那样为每一行设置一些值

<td id="123">Display</td>

如何在android中做到这一点。我使用以下代码进行列表视图显示

ArrayList<String> filelist = new ArrayList<String>();
final ListView mainlist   = (ListView)findViewById(R.id.list);
....
....
for (int l=0;l<lines.length;l++)
{
     filelist.addAll( Arrays.asList(lines[l].toString())) ; 
}
ArrayAdapter adp = new ArrayAdapter(this, android.R.layout.simple_list_item_1, filelist);
mainlist.setAdapter(adp);
mainlist.setTextFilterEnabled(true);

【问题讨论】:

  • 您的意思是,您想为每个列表项附加独特的价值?
  • 可能是 unqiue 或者可能是相同的,并且该项目的 onclick 也会获得该值
  • 好的...那么你必须实现自定义适配器类,你可以在那里为每个项目设置标签!

标签: android android-layout android-intent android-emulator


【解决方案1】:

你可以试试这个:

CustomAdapter.class:

public class CustomAdapter extends ArrayAdapter<String>{

    Context mContext;
    String[] list;
    LayoutInflater mInflater;
    public static HashMap<Integer, Integer> hashkeys=new HashMap<Integer,Integer>();

    public CustomAdapter(Context context, int textViewResourceId,
            String[] objects) {
        super(context, textViewResourceId, objects);
        list=objects;
        mInflater = LayoutInflater.from(context);
        mContext=context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
         final ViewHolder holder;

         if(convertView==null)
         {
              convertView = mInflater.inflate(R.layout.custom_item, null);
                 holder = new ViewHolder();

                 holder.tv=(TextView)convertView.findViewById(R.id.textview);                
                 convertView.setTag(holder);
         }
         else
         {   
            holder=(ViewHolder)convertView.getTag();
         }
         int value=0;
         switch(position){
             case 0:
                value=1;
                break;
             case 1:
                value=2; 
                break;
             case 3:
                value=3;
                break;                  
         }
         hashkeys.put(position,value);         

         return convertView;
    }
    static class ViewHolder
    {
            TextView tv;            
    }
}

现在在你的活动中,

CustomAdapter adp = new CustomAdapter(this, R.layout.custom_item, filelist);
mainlist.setAdapter(adp);
mainlist.setTextFilterEnabled(true);

mainlist.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position,
                        long id) {

            String unique_value=CustomAdapter.hashkeys.get(position);//get value on click of item

        }
});

【讨论】:

    【解决方案2】:
    private void setList(int viewId, String[] title_list) {
        ListView listView = (ListView) findViewById(viewId);
        ArrayAdapter<String> titlesAdaptor = new ArrayAdapter<String>(
                getApplicationContext(), android.R.layout.simple_list_item_1,
                title_list);
    
        listView.setAdapter(titlesAdaptor);
    
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view,
                    int position, long id) {
                listOnClicked(view, position, id);
            }
        });
    
    }// end of setList
    
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        //handle click events here
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多