是否可以逐个字符串,而不是按位置进行点击监听?

时间:2016-08-31 07:42:47

标签: android

我有数千个项目存储在字符串数组中,并且没有一个是dublicate,我已经将它们全部显示在列表中。现在,我想显示描述是否单击了文本,我将在警告对话框中显示它们,有没有办法存储值作为文本点击而非按位置?我不想使用职位来打电话给他们,因为如果以后我必须删除列表中的任何内容,那么我必须重新制作所有内容。所以,我想要的是文字" vishnu"单击然后将名为vishnu的东西作为id并根据文本调用vishnu描述单击而不是按位置。提前致谢!!这是我们为职位做的事情

@Override
public void onBindViewHolder(final NameViewHolder holder, final int position) {
    holder.textView.setText(names.get(position).textView);

    holder.textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(view.getContext(), "" + position, Toast.LENGTH_SHORT).show();
        }
    });
}

2 个答案:

答案 0 :(得分:0)

使用getTag()/ setTag在视图中存储数据。例如:

使用字段标题和说明

创建新类
public class SomeObject{
   String title;
   String description;
}

在适配器外部创建新列表并通过此对象填充它。 把它们推到适配器上。

ArrayList<SomeObject> mList = new ArrayList<>();

public void setData(ArrayList<SomeObject> list ){
     mList = list;
     notifyDataSetChanged();
}


@Override
public void onBindViewHolder(final NameViewHolder holder, final int position) {
   holder.textView.setText(mList.get(position).title); // here is a title
   holder.textView.setTag(mList.get(position)); // push whole object to tag

   holder.textView.setOnClickListener(new View.OnClickListener() {

       @Override
       public void onClick(View view) {
           SomeObject someObject =  (SomeObject)view.getTag(); // fetch object from tag of view
           Toast.makeText(view.getContext(), someObject , Toast.LENGTH_SHORT).show();
       }
    });
}

答案 1 :(得分:0)

创建一个Hashtable(自己选择一个适合的类。我不确定但是Toast.makeText(view.getContext(), myDictionary.get((string)view.getTag()), Toast.LENGTH_SHORT).show(); 可能有效),它为每个字符串保存一个Key值对,键是字符串本身,值是单击该字符串时要显示的说明。

然后你可以使用:

//In Class
Dictionary<string, string> myDict;

//In ctor (or anywhere before you need it)
string nameString = "Marlon";
string descriptionString = "Some dude currently on stackoverflow.";
myDict = new Hastable<string, string>(); //Create dictionary
myDict.put(nameString, descriptionString); //Fill dictionary

//When you want to get your string
string output = myDict.get("Marlon"); //Get description
descriptionTextView.text = output;  //Put text at screen

获取相应的文字。

编辑2:如何使用词典(示例):

{{1}}

修改:在这里,您可以找到the documentation