Android 仅显示一个textview数据的listview项
我已经创建了一个列表视图,它有1个图像和2个文本。 但在输出中,listview仅显示第二个textview数据。第一个文本视图为空 这是我的listview的单项目布局Android 仅显示一个textview数据的listview项,android,listview,Android,Listview,我已经创建了一个列表视图,它有1个图像和2个文本。 但在输出中,listview仅显示第二个textview数据。第一个文本视图为空 这是我的listview的单项目布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="55dp" android:orientation="ho
<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"/>
下面是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;
}
}
公共类CustomAdapter扩展了ArrayAdapter{
私有ArrayList数据集;
语境;
//视图查找缓存
私有静态类视图持有者{
TextView-txtName;
TextView txtCounter;
图像视图图标;
}
公共CustomAdapter(ArrayList数据、上下文){
超级(上下文、右布局、类别列表、数据);
this.dataSet=数据;
this.mContext=上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//获取此职位的数据项
DataModel DataModel=getItem(位置);
//检查是否正在重用现有视图,否则会膨胀视图
ViewHolder ViewHolder;//存储在标记中的视图查找缓存
if(convertView==null){
viewHolder=新的viewHolder();
LayoutInflater充气器=LayoutInflater.from(getContext());
convertView=充气机。充气(R.layout.category_列表,父项,false);
viewHolder.txtName=(TextView)convertView.findViewById(R.id.item_title);
viewHolder.txtCounter=(TextView)convertView.findViewById(R.id.item_计数器);
viewHolder.icon=(ImageView)convertView.findViewById(R.id.item_图标);
convertView.setTag(viewHolder);
}
其他的
{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.txtName.setText(dataModel.getName());
viewHolder.txtCounter.setText(dataModel.getCounter());
//返回要在屏幕上渲染的已完成视图
返回视图;
}
}
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();
}
});
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById();
单击侦听器();
listView=(listView)findViewById(R.id.caregoryList);
dataModels=新的ArrayList();
添加(新的数据模型(“香蕉面包”,“9”));
添加(新的数据模型(“纸杯蛋糕”,“9”));
添加(新的数据模型(“甜甜圈”,“9”));
添加(新的数据模型(“Eclair”,“9”);
添加(新的数据模型(“Froyo”,“0”));
添加(新的数据模型(“姜饼”、“0”);
添加(新的数据模型(“蜂巢”,“1”));
添加(新的数据模型(“冰淇淋三明治”,“1”));
添加(新的数据模型(“果冻豆”,“2”));
添加(新的数据模型(“Kitkat”,“3”));
添加(新的数据模型(“棒棒糖”,“4”));
adapter=新的CustomAdapter(数据模型,getApplicationContext());
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
DataModel=dataModels.get(位置);
Snackbar.make(视图,dataModel.getName()+“\n”+dataModel.getName()+”API:“+dataModel.getCounter(),Snackbar.LENGTH\u LONG)
.setAction(“无操作”,null).show();
}
});
因此,运行此代码后,listview仅显示第二个计数器文本。第一个textview显示为空白。我对您的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/>
我对您的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/>
这种方式的xml和代码几乎没有问题,只是缺少textColor属性。文本默认为白色(可能与您选择的主题相关)。 只需在textView项目标题中添加颜色,例如:
android:textColor="@android:color/holo_orange_dark"
您将看到文本。这种方式的xml和代码几乎没有问题,只是缺少textColor属性。文本默认为白色(可能与您选择的主题相关)。 只需在textView项目标题中添加颜色,例如:
android:textColor="@android:color/holo_orange_dark"
您将看到文本。您的第一个文本视图的
版面宽度
是0dp
但是我添加了版面权重您的问题解决了吗?还没有…@Tahsinrupam您的第一个文本视图的版面宽度
是0dp
但是我添加了版面权重您的问题解决了吗?还没有…@tahsinRupam@Androidss- 仍然没有显示第一个文本视图data@Androidss-仍然没有显示第一个文本视图data@Dus-非常感谢……:D@Dus-非常感谢……:D