xi_de
xi_de
采纳率13%
2018-01-31 05:42

android listview点击显示文本获取文本对应的ID 值

5
已采纳

本人刚接触android,现在有一个android listview点击显示文本获取文本相对应文本的ID值,我放了一个隐藏的textview,但是总是报错。现在没有思路不知道该怎么做这个,如果有相类似的实践demo能推荐一个最好。
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

10条回答

  • qby_nianjun brave_shine 3年前

    你问的不太清楚,如果贴有代码更好回答一点。
    现在按我的理解的话,不知道你已经走到哪一步了,就说一下步骤吧:
    1、从后台获取数据,这个应该是完成了;
    2、把得到的数据转换成JavaBean,如果字段很少的话,你也可以用HashMap键值对保存,添加到集合mList中。
    3、创建adapter,把第二步得到的集合mList传入adapter,把adapter设置到listview;
    (如果是在初始化的时候创建设置好了,这一步就是刷新数据了)
    4、设置点击事件,你可以在页面中设置使用listview的setOnItemClickListener方法,
    也可以在条目布局点击的控件上加上id,然后在adapter的getView方法里通过findViewById找到该控件,
    在这个控件上设置setOnClickListener方法。
    5、在第四步的两种方法中,都可以根据索引position使用集合mList的get(position)方法获取到点击条目的数据,ID自然也在其中。
    按以上五步肯定能找到你要的,但是看你截的图,感觉你是布局写错了,数据也传错了
    把ID(110404)跟名字(A区成都市区张军(现金))都当作单独的一个条目了
    如果是这样,那按情况说一下:
    a.你就是要ID和名字展示,条目布局应该是这样的
    这是一条条目
    b.如果是只展示名字,那布局就没有错了
    但是不管哪种,传的数据肯定是错了,应当把ID和名字关联起来

     private ArrayList<HashMap<String, String>> mList = new ArrayList<>();
     //请求获取到数据后
     mList.clear();
     //在for循环中
     HashMap<String, String> map = new HashMap<>();
     map.put("id", "110404");
     map.put("name", "A区成都市区张军(现金)");
     mList.add(map);
     //循环执行完
     //设置adapter或刷新adapter
    

    这样在adapter中mList.get(position)获得的就是一个map集合;

     HashMap<String, String> map = mList.get(position);
     //获得ID
     String id = map.get("id");
     //获得名字
     String name = map.get("name");
    

    希望能够帮助到你!

    点赞 评论 复制链接分享
  • qq_33807593 qq_33807593 3年前

    感觉可以在Adapter中公开获取对应控件的方法

    点赞 1 评论 复制链接分享
  • qscgy963 qscgy963 3年前

    能否把代码和错误信息,贴出来,这能才能针对这找问题

    点赞 1 评论 复制链接分享
  • ningwwc ningwwc 3年前

    报错信息给出来,我估计你想想点listview ,点那行出来个文本显示哪行的内容;对话话,联系我

    点赞 1 评论 复制链接分享
  • hlf890112sfl hlf890112sfl 3年前

    public View getView(int position, View convertView, ViewGroup parent)

    点赞 1 评论 复制链接分享
  • suwenlai suwenlai 3年前

    应该是你的数据返回结构有问题吧 点击的时候获取条目对应的bean 然后bean里就有相对应的各种参数了

    点赞 评论 复制链接分享
  • Ride_donkey_sing Ride_donkey_sing 3年前

    list.get()

    点赞 评论 复制链接分享
  • LLJJYY001 TMH_ITBOY 3年前

    我有两种思路:
    1.你无法获取你点击的item的index:
    item的点击事件里面回调函数里面一定会有一个view,根据此view可以找到你点击的那个item对应的TextView,
    然后TextView.getText()即可拿到文本,如果你要拿到文本对应的其他东西(比如id),可以根据这个文本去你的数据集合中遍历
    2.你能准确获取你点击的item的index:
    直接根据这个index去你的数据集合里面获取你要的文本id

    以上为个人思路,不喜勿喷

    点赞 评论 复制链接分享
  • z979451341 键盘舞者113 3年前

    在Adapter设配器里设置点击事件就好了

    public class ListItemAdapter extends BaseAdapter implements OnClickListener {

    private List mList;

    private Context mContext;

    private InnerItemOnclickListener mListener;

    public ListItemAdapter(List<String> mList, Context mContext) {  
        this.mList = mList;  
        this.mContext = mContext;  
    }  
    
    @Override  
    public int getCount() {  
        // TODO 自动生成的方法存根  
        return mList.size();  
    }  
    
    @Override  
    public Object getItem(int position) {  
        // TODO 自动生成的方法存根  
        return mList.get(position);  
    }  
    
    @Override  
    public long getItemId(int position) {  
        // TODO 自动生成的方法存根  
        return position;  
    }  
    
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        final ViewHolder viewHolder;  
        if (convertView == null) {  
            viewHolder = new ViewHolder();  
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item,  
                    null);  
            viewHolder.bt1 = (Button) convertView.findViewById(R.id.bt1);  
            viewHolder.bt2 = (Button) convertView.findViewById(R.id.bt2);  
            viewHolder.tv = (TextView) convertView.findViewById(R.id.tv);  
            convertView.setTag(viewHolder);  
        } else {  
            viewHolder = (ViewHolder) convertView.getTag();  
        }  
        viewHolder.bt1.setOnClickListener(this);  
        viewHolder.bt2.setOnClickListener(this);  
        viewHolder.bt1.setTag(position);  
        viewHolder.bt2.setTag(position);  
        viewHolder.tv.setText(mList.get(position));  
        return convertView;  
    }  
    
    public final static class ViewHolder {  
        Button bt1, bt2;  
        TextView tv;  
    }  
    
    interface InnerItemOnclickListener {  
        void itemClick(View v);  
    }  
    
    public void setOnInnerItemOnClickListener(InnerItemOnclickListener listener){  
        this.mListener=listener;  
    }  
    
    @Override  
    public void onClick(View v) {  
        mListener.itemClick(v);  
    }  
    

    }

    public class MainActivity extends Activity implements InnerItemOnclickListener,

    OnItemClickListener {

    private ListView mList;

    private List mDataList;

    private ListItemAdapter mAdapter;

    private static final String[] Datas = { "北京", "上海", "广州", "深圳", "苏州", "南京",

    "武汉", "长沙", "杭州", "长春", "无锡", "常州", "绍兴", "嘉兴", "衢州" };

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        initView();  
        mDataList = new ArrayList<String>();  
        for (int i = 0; i < Datas.length; i++) {  
            mDataList.add(Datas[i]);  
        }  
        mAdapter = new ListItemAdapter(mDataList, this);  
        mAdapter.setOnInnerItemOnClickListener(this);  
        mList.setAdapter(mAdapter);  
        mList.setOnItemClickListener(this);  
    }  
    
    private void initView() {  
        mList = (ListView) findViewById(R.id.lv);  
    }  
    
    @Override  
    public void itemClick(View v) {  
        int position;  
        position = (Integer) v.getTag();  
        switch (v.getId()) {  
        case R.id.bt1:  
            Log.e("内部item--1-->", position + "");  
            break;  
        case R.id.bt2:  
            Log.e("内部item--2-->", position + "");  
            break;  
        default:  
            break;  
        }  
    
    }  
    
    @Override  
    public void onItemClick(AdapterView<?> parent, View view, int position,  
            long id) {  
        Log.e("整体item----->", position + "");  
    }  
    

    }

    点赞 评论 复制链接分享
  • qubentao 渠涛涛 3年前

    list.get()你的下标,进行展示你的数据,给个吐司检查一下

    点赞 评论 复制链接分享

相关推荐