【问题标题】:how to give id to textview item inside listview?如何为listview中的textview项目提供id?
【发布时间】:2023-04-10 15:39:03
【问题描述】:

当文本视图项位于 Listview 中时,如何为它指定 ID?

             adapter = new SimpleCursorAdapter(this, R.layout.row, c,
                new String[] { "body", "address" }, new int[] {
                        R.id.lblMsg, R.id.lblNumber });

我应该如何处理lblMsglblNumber

【问题讨论】:

  • 在 xml 文件中创建行并在此处提供 id,并在适配器中将其用于特定行的列表。
  • 我没有得到答案。如何创建行???
  • 在下面查看我的答案。

标签: android


【解决方案1】:

你应该这样声明 ID

 <TextView
    android:id="@+id/yourIdHere"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:gravity="center"
    android:text="yourTextHere" 

在 xml 中为每个元素声明 id 和 定义

Textview 电视; // 就在 onCreate 之前。

之后在你的 java 代码中去 onCreate & 像这样定义:

    tv = (TextView) findViewById(R.id.yourIdHere);

【讨论】:

  • 但我正在使用 listview 。在这方面我应该如何使用文本视图。
【解决方案2】:

首先为列表视图的行创建 xml 文件。参考这个:

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView 
        android:id="@+id/ivImage"
        android:layout_height="80dp"
        android:layout_width="80dp"
        android:layout_alignParentLeft="true"/>
    <TextView 
        android:id="@+id/tvMovieName"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/ivImage"/>
    <TextView 
        android:id="@+id/tvRating"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/ivImage"
        android:layout_below="@+id/tvMovieName"/>    

    <TextView 
        android:id="@+id/tvGenre"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/ivImage"
        android:layout_below="@+id/tvRating"/>

    <CheckBox 
        android:id="@+id/cbSelect"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_above="@+id/tvYear"
        android:layout_alignParentRight="true"/>

    <TextView 
        android:id="@+id/tvYear"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_below="@+id/tvGenre"
        android:layout_alignParentRight="true"/>
</RelativeLayout>

适配器代码:

package com.example.webservicecall;

import java.util.Arrays;
import java.util.List;

import org.w3c.dom.Text;

import com.squareup.picasso.Picasso;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;

public class MovieAdapter extends ArrayAdapter<MovieVO>{

    Context context;
    List<MovieVO> movieList;
    public MovieAdapter(Context context, int resource, List<MovieVO> objects) {
        super(context, resource, objects);
        this.context = context;
        movieList = objects;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_row, null);
        TextView tvMovieName = (TextView) convertView.findViewById(R.id.tvMovieName);
        TextView tvRating = (TextView) convertView.findViewById(R.id.tvRating);
        TextView tvGenre = (TextView) convertView.findViewById(R.id.tvGenre);
        TextView tvYear = (TextView) convertView.findViewById(R.id.tvYear);
        ImageView ivImage = (ImageView) convertView.findViewById(R.id.ivImage);
        CheckBox cbSelect = (CheckBox) convertView.findViewById(R.id.cbSelect);

        if(movieList.get(position).isSelected())
        {
            cbSelect.setChecked(true);
        }
        else
        {
            cbSelect.setChecked(false);
        }

        cbSelect.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked)
                {
                    movieList.get(position).setSelected(true);
                }
                else
                {
                    movieList.get(position).setSelected(false);
                }
            }
        });

        tvMovieName.setText(movieList.get(position).getName());
        tvRating.setText(movieList.get(position).getRating());
        String genreStr = "";
//        for (String str : movieList.get(position).getGenre()) {
//            genreStr += str + ", ";
//        }
        tvGenre.setText(Arrays.toString(movieList.get(position).getGenre()).replace("[", "").replace("]", ""));
        tvYear.setText(movieList.get(position).getYear());
        Picasso.with(context).load(movieList.get(position).getImageUrl()).into(ivImage);
        return convertView;
    }
}

活动代码:

MovieAdapter adptr = new MovieAdapter(MainActivity.this, 0, movieList);
lvMovie.setAdapter(adptr);

这里的movieList 是列表。 lvMovie 是列表视图。 MovieAdapter 是适配器。

结果是:

【讨论】:

  • 非常感谢,亲爱的,现在我清楚了.. 让我自己做吧 :)
  • 太棒了!试试这个作为参考
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多