gpt4 book ai didi

android - 在 Recycler View 中单击项目时获取 TextView 的值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:57 25 4
gpt4 key购买 nike

当我在 RecyclerView 中的项目上单击 textview 时,我想要 TextView 的值。我不想要整个 Item Clickable,我只需要在 item clickable 上有一个 textview,在下面的代码中是“countNumber”。当我点击它时,我想得到 countNumber 显示的文本数据。

回收适配器

 public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

ArrayList<UserData> dataSet = new ArrayList<>();

public CustomAdapter(ArrayList<UserData> data) {
this.dataSet = data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_layout, parent, false);


MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {

holder.heading.setText(dataSet.get(listPosition).getHeading());
holder.description.setText(dataSet.get(listPosition).getDescription());
holder.countNumber.setText(String.valueOf(dataSet.get(listPosition).getCount()));
holder.time.setText(dataSet.get(listPosition).getTime());
holder.date.setText(dataSet.get(listPosition).getDate());
holder.place.setText(dataSet.get(listPosition).getPlace());


}

@Override
public int getItemCount() {
return dataSet.size();
}

public void countIncrease() {

}

public List<UserData> getList() {
return this.dataSet;
}

public static class MyViewHolder extends RecyclerView.ViewHolder {


TextView heading;
TextView description;
TextView countNumber;
TextView time;
TextView date;
TextView place;

public MyViewHolder(final View itemView) {
super(itemView);

this.countNumber = (TextView) itemView.findViewById(R.id.countId);
this.heading = (TextView) itemView.findViewById(R.id.textViewName);
this.description = (TextView) itemView.findViewById(R.id.textViewVersion);
this.place = (TextView) itemView.findViewById(R.id.placeId);
this.time = (TextView) itemView.findViewById(R.id.timeId);
this.date = (TextView) itemView.findViewById(R.id.dateId);
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//i need counterNumber value here
Log.v("loo", "Click");
}
});
}
}
}

主要 Activity

 public class MainActivity extends AppCompatActivity {

DBHelper dbHelper;

CustomAdapter adapter;
private RecyclerView.LayoutManager layoutManager;
private static RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

dbHelper = DBHelper.getInstance(getApplicationContext());

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addButton();
}
});



recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);

layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());

adapter = new CustomAdapter(dbHelper.getAllIncidents());
recyclerView.setAdapter(adapter);

}




public void addButton(){
Intent addButtonIndent = new Intent(this,AddData.class);
startActivity(addButtonIndent);
}


}

最佳答案

如果你想从适配器的内部获取,如@ramesh-r所说,你可以使用((TextView)v).getText();

this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView)v).getText();
}
});

但是如果你想从Activity中获取值,你需要为它创建并实现一个接口(interface)。首先在您的适配器中创建接口(interface)(带有注释的代码):

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

ArrayList<UserData> dataSet = new ArrayList<>();

public CustomAdapter(ArrayList<UserData> data) {
this.dataSet = data;
}

// Define listener member variable
private static OnRecyclerViewItemClickListener mListener;

// Define the listener interface
public interface OnRecyclerViewItemClickListener {
void onItemClicked(String text);
}

// Define the method that allows the parent activity or fragment to define the listener.
public void setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mListener = listener;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
...
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {

...
}

...

public static class MyViewHolder extends RecyclerView.ViewHolder {
...

public MyViewHolder(final View itemView) {
super(itemView);

...

this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// send the text to the listener, i.e Activity.
mListener.onItemClicked(((TextView)v).getText());
}
});
}
}

...
}

然后在你的Activity中实现接收文本的接口(interface):

adapter = new CustomAdapter(dbHelper.getAllIncidents());

// Interface implementation.
adapter.setOnRecyclerViewItemClickListener(new YourAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClicked(String text) {
Log.d(TAG, "Text is = " + text);
}
});

recyclerView.setAdapter(adapter);

关于android - 在 Recycler View 中单击项目时获取 TextView 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com