如何在Android/Java列表视图中显示多个文本项?

如何在Android/Java列表视图中显示多个文本项?,java,android,listview,Java,Android,Listview,我有一个带有复选框、图像和文本字段的列表视图。现在,我确实希望在文本字段中显示多个项目。问题是我希望这些论点是整齐划一的。我是否可以在文本字段中设置制表位、格式或类似的内容,或者我是否必须创建更多的文本字段并在自己的字段中设置每个值 我的列表应该类似于: [Image] [checkbox] "arg11 arg12 arg13" [Image] [checkbox] "arg21 arg22 arg23" [Image] [checkbox] "arg

我有一个带有复选框、图像和文本字段的列表视图。现在,我确实希望在文本字段中显示多个项目。问题是我希望这些论点是整齐划一的。我是否可以在文本字段中设置制表位、格式或类似的内容,或者我是否必须创建更多的文本字段并在自己的字段中设置每个值

我的列表应该类似于:

[Image]  [checkbox]   "arg11    arg12    arg13"
[Image]  [checkbox]   "arg21    arg22    arg23"
[Image]  [checkbox]   "arg31    arg32    arg33"
谢谢你的建议


编辑:只是为了澄清一些事情。我已经有了一个带有图像/复选框和一个文本字段的工作列表视图/适配器。我是Android新手,所以我只想知道是否有一种优雅的方式来处理在文本字段中显示多个文本项。在Windows中,我会简单地使用TabStops,它们看起来是有序的,在一列中,但我不太了解android,不知道是否有类似的东西,或者是否需要单独的文本字段来获取列中的文本字段。

基本上,您需要为ListView实现自己的适配器

首先,您需要创建自己的适配器类,该类可以是baseAdapter或其派生类,然后您需要在其中实现ListView项显示逻辑

例如设置文本视图、图像视图等

查看本教程以了解更多信息


基本上,您需要为ListView实现自己的适配器

首先,您需要创建自己的适配器类,该类可以是baseAdapter或其派生类,然后您需要在其中实现ListView项显示逻辑

例如设置文本视图、图像视图等

查看本教程以了解更多信息


来自我之前的一篇帖子:

每当您想处理ListView中的视图时,您 需要创建一个自定义适配器来处理您的逻辑 实现并根据需要将该信息传递给视图


从我以前的一篇帖子:

每当您想处理ListView中的视图时,您 需要创建一个自定义适配器来处理您的逻辑 实现并根据需要将该信息传递给视图


您应该重新处理行xml。我想您可能知道行xml,您可以在其中更改每一行的设计。采用相对或线性布局并添加视图,如下所示

[Image]  [checkbox]   "text1"   "text2   "text3"
[Image]  [checkbox]   "text1"   "text2   "text3"
[Image]  [checkbox]   "text1"   "text2   "text3"
不使用制表符空格,而是使用三种不同的文本视图。保留“1”作为每个TextView的权重,并将其添加到线性布局中,该布局的总权重总和为3。因此,所有三个TextView将平等地放置在父视图中


试试这个,让我知道你是否修复了它……

你应该重新处理xml行。我想您可能知道行xml,您可以在其中更改每一行的设计。采用相对或线性布局并添加视图,如下所示

[Image]  [checkbox]   "text1"   "text2   "text3"
[Image]  [checkbox]   "text1"   "text2   "text3"
[Image]  [checkbox]   "text1"   "text2   "text3"
不使用制表符空格,而是使用三种不同的文本视图。保留“1”作为每个TextView的权重,并将其添加到线性布局中,该布局的总权重总和为3。因此,所有三个TextView将平等地放置在父视图中


试试这个,让我知道你是否修复了它….

如果你确定文本的大小,那么你可以在文本中使用制表符。如果这样做不起作用,那么您将不得不扩展行布局。正如Pavandroid所提到的,如果您确定文本的大小,那么您可以在文本中使用制表符。如果这样做不起作用,那么您将不得不扩展行布局。正如Pavandroid所提到的,您可以创建新的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>
自定义适配器

 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,比如row.xml,我们可以在listview中为每一行扩展它

根据需要设计行,例如:

row.xml

<LinearLayout android:layout_height="wrap_content"
     android:layout_width="fill_parent"
      android:orientation="horizontal">  
    <ImageView ..../>
    <CheckBox ...../>
    <TextView ...../>
    <TextView ...../>
 </LinearLayout>
自定义适配器

 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;
    }

}

嗨,谢谢你的回复。我想我已经做了你提到的(在我的帖子中澄清了)。我想知道的是,在列中显示文本的最佳方式是什么。您可以使用表格布局或结构化(带权重)如果您希望文本视图的间隔均匀,请使用线性布局。最好的方法是为每个文本项目创建一个文本视图。但是您也可以使用一个文本视图,然后根据需要将其连接起来。您好,谢谢您的回复。我想我已经做了你提到的(在我的帖子中澄清了)。我想知道的是,在列中显示文本的最佳方式是什么。您可以使用表格布局或结构化(带权重)如果您希望文本视图的间距均匀,请使用线性布局。最好的方法是为每个文本项目创建一个文本视图。但您也可以使用一个文本视图,然后根据需要将其连接起来。