[英]How to show more than one text item in an Android/Java listview?
我有一个带复选框,图像和文本字段的列表视图。 现在,我确实想在文本字段中显示多个项目。 问题是我希望论点整齐。 我可以在文本字段中以某种方式设置制表符或格式等吗,还是必须实际上制作更多文本字段并在其自己的字段中设置每个值?
我的清单应如下所示:
[Image] [checkbox] "arg11 arg12 arg13"
[Image] [checkbox] "arg21 arg22 arg23"
[Image] [checkbox] "arg31 arg32 arg33"
感谢您的任何建议。
编辑:只是为了澄清事情。 我有一个带有图像/复选框和一个文本字段的工作listview / adapter。 我是Android的新手,所以我想知道是否有一种优雅的方法来处理在文本字段中显示多个文本项。 在Windows中,我只会使用tabstopps,它们看起来会在列中排列有序,但我对android的了解不够,无法知道是否存在类似的东西,或者是否需要单独的文本字段才能获取列中的文本字段。
您创建一个新的xml,例如row.xml,我们可以在listview中为每一行充气。
设计所需的行,例如:
row.xml
<LinearLayout android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal">
<ImageView ..../>
<CheckBox ...../>
<TextView ...../>
<TextView ...../>
</LinearLayout>
然后将CustomAdapter用于您的列表视图
喜欢,
listView.setAdapter(new CustomAdapter());
CustomAdapter,
class CustomAdapter extends BaseAdapter{
publicCustomAdapter() {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return xyz.size();
}
@Override
public String getItem(int position) {
return xyz.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.imageView = (ImageViewView)convertView.findViewById(R.id.image);
holder.checkbox = (CheckBox)convertView.findViewById(R.id.checkbox);
holder.textView1 = (TextView)convertView.findViewById(R.id.text1);
holder.textView2 = (TextView)convertView.findViewById(R.id.text2);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
//TODO set the values for views and return view
return convertView;
}
}
您应该对行xml进行重新处理。 我想您可能知道行xml,可以在其中更改每一行的设计。 采取相对布局或线性布局,并添加如下所示的视图。
[Image] [checkbox] "text1" "text2 "text3"
[Image] [checkbox] "text1" "text2 "text3"
[Image] [checkbox] "text1" "text2 "text3"
而不是使用制表符空间,而是使用三个不同的TextView。 保持每个TextView的权重为“ 1”,并将其添加到LinearLayout中,该权重总和为3。因此,所有三个TextView都将平均放置在父视图中。
试试这个,让我知道你是否解决了.....
基本上,您需要为ListView实现自己的适配器。
首先,您需要创建自己的适配器类(baseAdapter或其派生类),然后需要在其中实现ListView项目显示逻辑。
像设置您的textViews,imageViews等。
查看本教程以获取更多信息。
从我之前的一篇文章中:
每当您要使用ListView中的视图进行处理时,都需要创建一个自定义适配器,该适配器将处理您的逻辑实现并将该信息传递给必要的视图。
如果您确定文本的大小,则可以在文本中使用制表符。 如果这样不起作用,那么您将无法扩展行布局。 如Pavandroid提到的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.