ListView setText在特定位置

dyn*_*tem 5 android listview android-adapter baseadapter android-viewholder

我定义了以下代码,以便能够在特定位置设置文本.

if(position == 0) {
                holder.text.setText("blah");
            }
Run Code Online (Sandbox Code Playgroud)

我想要检查位置是否等于0,然后如果是,则在位置p上设置文本 - 每次它是p =位置+ 1(下一个位置).我们是否能够将文本从持有者设置为文本视图,但是在某个位置.

谢谢.

Roa*_*ock 7

我认为您仍在使用ListView,如果不是,请更新问题标题.

在您的getView(int position, View convertView, ViewGroup parent)方法中,检查要为其创建视图的位置.既然你已经在使用holder,我假设你在提取持有者之前已经完成了(convertView!= null)检查.

在getView(int position,View convertView,ViewGroup parent)中,您可以检查

if (position == 0) {
    holder.text.setText("blah");
} else {
    holder.text.setText("");
}
Run Code Online (Sandbox Code Playgroud)

请记住,else部分是必需的,因为视图往往会被重用,因此您的早期"blah"需要重置,否则在您的视图滚动时将在其他视图中可见.

有关如何重用视图的详细说明,您可以查看Romain Guy的精彩演讲,其中介绍了有关ListView的所有内容.


Eri*_*Liu 3

首先,你需要实现自己的RecyclerView.Adapter,在Adapter内部,你需要实现方法onBindViewHolder(),可以根据位置指定文本。

当位置为 0 时,您将获取一些文本并将其保存到字符串字段中,当位置为 1 时,您相应地设置该 TextView 的文本。

public class CustomAdapter extends RecyclerView.Adapter {

private String tempText;

...

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    if(position == 0) {
        tempText = "bla";
    }else if (position == 1){

        holder.text.setText(tempText);
    }
}
Run Code Online (Sandbox Code Playgroud)

}