获取recylerview项的上下文而不是它的postion android

时间:2016-01-15 13:02:22

标签: android android-listview textview onclicklistener android-recyclerview

我在我的应用程序中有一个recylerview,但是我能够得到每个项目的位置,但是我不太确定如何从recylerview获取该位置的上下文;

    mRecyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {

                @Override
                public void onItemClick(View view, int position) {
                    Snackbar.make(view, "clicked" + " " + position, Snackbar.LENGTH_LONG).setAction("Action", null).show();
                }
            })
    );

此外,每个项目/列的结构包含一个textView,我正在向其添加数据;

list.add(new itemtoadd("John Smith" + "\nMale" + "\nSingle”));

我想要做的是因为我只有一个textview包含3组数据Name + gender + status,同时获取位置的上下文我只想从中获取1个数据,例如名称这个人。

编辑:

现在我编写的代码获取了recylerview项目的位置,例如它会说点击1,我想要做的不是说点击1,我想让它获取位置1的上下文,例如,在这种情况下,得到约翰史密斯,男,单身'

我的意思是,比方说我在recylerview中有这些数据;

list.add(new itemtoadd("John Smith0" + "\nMale0" + "\nSingle0”));
list.add(new itemtoadd("John Smith1" + "\nMale1" + "\nSingle1”));
list.add(new itemtoadd("John Smith1" + "\nMale1" + "\nSingle1”));

在这种情况下,我添加到recylerview的第一个数据将位于位置0,而不是打印出位置0'我想得到poition 0中的数据,在这种情况下将是; John Smith0,Male0,Single0。

1 个答案:

答案 0 :(得分:1)

使用模型对象itemtoadd检索您的数据,而不是TextView

@Override
public void onItemClick(View view, int position) {

    Snackbar.make(view, "clicked" + " " + position, Snackbar.LENGTH_LONG).setAction("Action", null).show();

    itemtoadd yourItem = list.get(position); // here you get your clicked model item

    // then you can get the String value from your "itemtoadd" model.
}

修改

以下是itemtoadd模型的示例:

public class itemtoadd {

    private String mName;
    private String mGender;
    private String mStatus;


    public itemtoadd(String name, String gender, String status){
       mName = name;
       mGender = gender;
       mStatus = status;
    }

    public String getName(){
      return mName;
    }

    public String getGender(){
      return mGender;
    }

    public String getStatus(){
      return mStatus;
    }

    public String getPersonInformation(){
      return getName()+"\n"+getGender()+ "\n"+getStatus();
    }

}

通过上述课程,您可以分别使用yourItem.getName(),{{1}获取名称性别状态 },yourItem.getGender()