【问题标题】:listview item showing only one textview data-androidlistview 项目仅显示一个 textview data-android
【发布时间】:2017-02-12 23:05:46
【问题描述】:

我创建了一个包含 1 个图像和 2 个文本的列表视图。 但在输出中,列表视图仅显示第二个文本视图数据。第一个文本视图是空白的。

这是我的列表视图的单项布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dp"
android:orientation="horizontal"
android:background="#ffffff">

<!-- icon -->
<ImageView
    android:id="@+id/item_icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="10dp"
    android:src="@drawable/icon"
    />

<!-- title -->
<TextView
    android:id="@+id/item_title"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:text="hello"
    android:layout_marginTop="13dp"
    android:textSize="18dp" />

<TextView
    android:id="@+id/item_counter"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="10dp"
    android:text="1"
    android:background="@drawable/counter"
    android:gravity="center"
    android:textColor="#FFFFFF"
    android:textSize="12sp"
    android:textStyle="bold" />

<!-- counter -->
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/arrow"
    android:layout_centerVertical="true"
    android:layout_marginTop="14dp"
    android:id="@+id/arrow"/>

这是数据模型代码:

    public class DataModel {

    String name;
    String counter;

    public DataModel(String name,String counter ) {
        this.name=name;
        this.counter=counter;
    }

    public String getName() { return name;}

    public String getCounter() {
        return counter;
    }
}

这里是 CustomAdapter.java

    public class CustomAdapter extends ArrayAdapter<DataModel> {

    private ArrayList<DataModel> dataSet;
    Context mContext;

    // View lookup cache
    private static class ViewHolder {
        TextView txtName;
        TextView txtCounter;
        ImageView icon;
    }

    public CustomAdapter(ArrayList<DataModel> data, Context context) {
        super(context, R.layout.category_list, data);
        this.dataSet = data;
        this.mContext=context;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Get the data item for this position
        DataModel dataModel = getItem(position);
        // Check if an existing view is being reused, otherwise inflate the view
        ViewHolder viewHolder; // view lookup cache stored in tag

        if (convertView == null) {

            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.category_list, parent, false);
            viewHolder.txtName = (TextView) convertView.findViewById(R.id.item_title);
            viewHolder.txtCounter = (TextView) convertView.findViewById(R.id.item_counter);
            viewHolder.icon = (ImageView) convertView.findViewById(R.id.item_icon);
            convertView.setTag(viewHolder);
        } 
        else 
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.txtName.setText(dataModel.getName());
        viewHolder.txtCounter.setText(dataModel.getCounter());
        // Return the completed view to render on screen
        return convertView;
    }
}

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById();
    clickListeners();


    listView=(ListView)findViewById(R.id.caregoryList);

    dataModels= new ArrayList<>();


    dataModels.add(new DataModel("Banana Bread", " 9"));
    dataModels.add(new DataModel("Cupcake", "9"));
    dataModels.add(new DataModel("Donut","9"));
    dataModels.add(new DataModel("Eclair", "9"));
    dataModels.add(new DataModel("Froyo", "0"));
    dataModels.add(new DataModel("Gingerbread", "0"));
    dataModels.add(new DataModel("Honeycomb","1"));
    dataModels.add(new DataModel("Ice Cream Sandwich", "1"));
    dataModels.add(new DataModel("Jelly Bean", "2"));
    dataModels.add(new DataModel("Kitkat", "3"));
    dataModels.add(new DataModel("Lollipop","4"));



    adapter= new CustomAdapter(dataModels,getApplicationContext());

    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            DataModel dataModel= dataModels.get(position);
          Snackbar.make(view, dataModel.getName()+"\n"+dataModel.getName()+" API: "+dataModel.getCounter(), Snackbar.LENGTH_LONG)
                    .setAction("No action", null).show();
        }
    });

因此,运行此代码后,listview 仅显示第二个计数器文本。第一个 textview 显示为空白。

【问题讨论】:

  • 第一个文本视图的layout_width0dp
  • 但我添加了 layout_weight
  • 你的问题解决了吗?
  • 还没有...@ tahsinRupam

标签: android listview


【解决方案1】:

这种方式的 xml 和代码几乎没有问题,只是缺少 textColor 属性。文本默认为白色(可能与您选择的主题有关)。 只需在 textView item_title 中添加一种颜色,例如:

android:textColor="@android:color/holo_orange_dark"

你会看到文字。

【讨论】:

  • @Dus- 非常感谢... :D
【解决方案2】:

我对你的 XML 做了一些修改,复制粘贴试试:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dp"
android:orientation="horizontal"
android:background="#ffffff">

<!-- icon -->
<ImageView
    android:id="@+id/item_icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="10dp"
    android:src="@drawable/icon"
    />

<!-- title -->
<TextView
    android:id="@+id/item_title"
    android:layout_width="32dp"
    android:layout_weight="1"
    android:layout_height="32dp"
    android:text="hello"
    android:layout_marginTop="13dp"
    android:textSize="18dp" />

<TextView
    android:id="@+id/item_counter"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="10dp"
    android:text="1"
    android:background="@drawable/counter"
    android:gravity="center"
    android:textColor="#FFFFFF"
    android:textSize="12sp"
    android:textStyle="bold" />

<!-- counter -->
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/arrow"
    android:layout_centerVertical="true"
    android:layout_marginTop="14dp"
    android:id="@+id/arrow"/>
<LinearLayout/>

【讨论】:

  • @Androidss- 仍然没有显示第一个 textview 数据
猜你喜欢
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
相关资源
最近更新 更多