【问题标题】:Targeting strings in a listview android在listview android中定位字符串
【发布时间】:2013-03-28 08:58:52
【问题描述】:
   listView.setOnItemClickListener(new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {


                if(position == 1 ){
                    Toast.makeText(getApplicationContext(),
                    "Click ListItem Number " + position,
 Toast.LENGTH_LONG)
                    .show();
                }else{
                     }

我有一个来自自定义适配器的列表视图,它工作正常,当我单击一个项目时,它会获得正确的位置。 我如何从位置中提取字段视图文本。即

 holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);

我想从我点击的位置列表中定位 desc 字段.. 我知道您可以使用哈希映射,但是有没有办法通过列表位置仅针对项目单击的字段视图?我知道这是“webby”,但我确信 java 具有相同的灵活性

  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    RowItem rowItem = getItem(position);

    LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        convertView.setTag(holder);
    } else
        holder = (ViewHolder) convertView.getTag();

    holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());


    return convertView;
}       

【问题讨论】:

    标签: java android list listview


    【解决方案1】:

    如何从位置中提取字段视图文本。即

    holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
    

    你可以在onItemClick()里面使用:

    TextView textview = (TextView) view.findViewById(R.id.desc);
    // Now use textView.getText().toString() to get the description
    

    由于适配器中的convertView 与侦听器中的view 是同一个对象。

    【讨论】:

    • 这会起作用,但是从表示层中抓取数据不是最佳选择,并且当您没有列出简单的字符串数组时将不起作用。
    • “将数据从表示层中取回是次优的” 是的,但只有几毫秒,我在您的问题下方的 cmets 中发布了两个替代项。 “当你没有列出一个简单的字符串数组时将无法工作”问题是关于显示字符串。
    • 谢谢,我只是想把它留在那里,以防其他人遇到这个解决方案。
    【解决方案2】:

    你不能打电话给adapter.getItem(position)吗?

    【讨论】:

    • 不会只是获得列表中的位置吗?
    • 您是否使用 ArrayAdapter 将对象数组放入您的 listView 中?如果是这样,那么您可以调用 yourAdapter.getItem(position),其中 position 是点击处理函数的参数。这将为您提供传递给适配器的原始对象。
    • 是的,我是 listView.getItemAtPosition(i).toString();我正在尝试这个,但我只需要一个特定的部分而不是整个文本
    • 这只是问题的一部分。你在使用 ArrayAdapter 吗?
    • 是的,我做了一个自定义的,因为我有几行文本,所以我正在转换文本视图
    【解决方案3】:
    1. 如果您只需要文本当前项目使用 BaseAdapter ,您可以通过以下方式获取文本:

      (字符串)适配器.getItem(位置);

    2. 如果您需要 TextView 对象当前项,您可以通过以下方式获取 TextView: listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView parent, View view, int position, long id) {
      ViewHolder 持有者 = (ViewHolder)view;
      TextView txtDescTV = holder.txtDesc;
      }
      }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      相关资源
      最近更新 更多