如何将包含字符串数据的选定行显示到Toast中?

时间:2016-09-12 06:33:36

标签: android arrays

字符串位于字符串数组中,我称之为字符串,设置值如

    nameCollection = getActivity().getResources().getStringArray(R.array.boy);

for (int i = 0; i < nameCollection.length; i++) {
names.add(new Name(nameCollection[i]));   //It will display all in the list

}

现在,如果按下任何一行,应显示字符串数组中的文本。例如,

cv.setOnClickListener(new OnClick....  {
 Toast.makeText(getApplicationContext(),"Need to display selected string row data",Toast.LENGTH_SHORT).show();
});

例如,列表就像

APPLE
BALL
CAT
DOG

现在,如果我按下CAT然后显示吐司为“CAT” 我使用的是RecyclerView而不是listview。谢谢!! ;)

3 个答案:

答案 0 :(得分:1)

在您的onBindViewHolder() RecyclerView中使用以下代码。

holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, "Click:" + names.get(position), Toast.LENGTH_SHORT).show();
            }
        });

答案 1 :(得分:1)

为RecyclerView实现OnClickListener的更好方法是......

使用片段:

RecyclerView recyclerView = findViewById(R.id.recycler);
recyclerView.addOnItemTouchListener(
    new RecyclerItemClickListener(context, recyclerView ,new RecyclerItemClickListener.OnItemClickListener() {
      @Override public void onItemClick(View view, int position) {
        // do whatever
      }

      @Override public void onLongItemClick(View view, int position) {
        // do whatever
      }
    })
);

RecyclerItemClickListener实施:

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;


public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
  private OnItemClickListener mListener;

  public interface OnItemClickListener {
    public void onItemClick(View view, int position);

    public void onLongItemClick(View view, int position);
  }

  GestureDetector mGestureDetector;

  public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
    mListener = listener;
    mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }

        @Override
        public void onLongPress(MotionEvent e) {
            View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
            if (child != null && mListener != null) {
                mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
            }
        }
    });
}

  @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
    View childView = view.findChildViewUnder(e.getX(), e.getY());
    if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
      mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
      return true;
    }
    return false;
  }

  @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { }

  @Override
  public void onRequestDisallowInterceptTouchEvent (boolean disallowIntercept){}
}

答案 2 :(得分:0)

ListViewOnItemClickListner。如果您使用此列表器,您将获得行位置作为参数。使用此位置您可以从字符串数组中获取数据。

listView.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(getApplicationContext(),names.get(position).getName()+"", Toast.LENGTH_SHORT).show();
    }
});