我在查看下的ArrayAdapter中有两个OnClickListener。
我有onClick行和onClick按钮,两者都在同一个Listview中。我想把它们结合起来。为两者创建一个OnClickListener。单击时,它们都会转到相同的Intent /页面。
不知道怎么做,不重复我的代码。
提前致谢。
public class ListAdapter extends ArrayAdapter {
private List<ExerciseListModel> exModelList;
private int resource;
private LayoutInflater inflater;
public ListAdapter(Context context, int resource, List<ExerciseListModel> objects) {
super(context, resource, objects);
exModelList = objects;
this.resource = resource;
inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(resource, null);
holder.exTitle = (TextView)convertView.findViewById(R.id.myTitle);
holder.exBody = (TextView)convertView.findViewById(R.id.myBody);
holder.exId = (TextView)convertView.findViewById(R.id.myId);
holder.exDone = (TextView)convertView.findViewById(R.id.myCount);
holder.exIcon = (ImageView)convertView.findViewById(R.id.myIcon);
holder.btnStart = (Button)convertView.findViewById(R.id.btnStart);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//onClick Row
convertView.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
String nid = exModelList.get(position).getNid();
String title = exModelList.get(position).getTitle();
String body = exModelList.get(position).getBody();
Intent intent = new Intent(ExerciseListActivity.this, ExerciseDetailsActivity.class);
intent.putExtra("nid", nid);
intent.putExtra("title", title);
intent.putExtra("body", body);
startActivity(intent);
}
});
//onClick Button
holder.btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
String nid = exModelList.get(position).getNid();
String title = exModelList.get(position).getTitle();
String body = exModelList.get(position).getBody();
Intent intent = new Intent(ExerciseListActivity.this, ExerciseDetailsActivity.class);
intent.putExtra("nid", nid);
intent.putExtra("title", title);
intent.putExtra("body", body);
startActivity(intent);
}
});
holder.exId.setText("ID: " + exModelList.get(position).getNid());
holder.exBody.setText(exModelList.get(position).getBody());
holder.exTitle.setText(exModelList.get(position).getTitle());
if(exModelList.get(position).getExercise_done().equals("[]")){
holder.exDone.setText(exercise_not_done);
holder.exIcon.setImageResource(R.drawable.exercise_not_started);
}else{
String exercise_count = exModelList.get(position).getExercise_done();
String ex_done = exercise_done + " " + exercise_count + " " + exercise_times_done;
holder.exDone.setText(ex_done);
holder.exIcon.setImageResource(R.drawable.exercise_started);
}
return convertView;
}
class ViewHolder{
private TextView exTitle;
private TextView exBody;
private TextView exId;
private ImageView exIcon;
private TextView exDone;
private Button btnStart;
}
}
答案 0 :(得分:0)
在您的活动/片段(您声明ListView的地方)
中list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent(ExerciseListActivity.this, ExerciseDetailsActivity.class);
intent.putExtra("nid", nid);
intent.putExtra("title", title);
intent.putExtra("body", body);
startActivity(intent);
}}
答案 1 :(得分:0)
此代码可以帮助您,为两个View定义OnClicklistener方法 和按钮。
public class ListAdapter extends ArrayAdapter {
private List<ExerciseListModel> exModelList;
private int resource;
private LayoutInflater inflater;
public ListAdapter(Context context, int resource, List<ExerciseListModel> objects) {
super(context, resource, objects);
exModelList = objects;
this.resource = resource;
inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(resource, null);
holder.exTitle = (TextView)convertView.findViewById(R.id.myTitle);
holder.exBody = (TextView)convertView.findViewById(R.id.myBody);
holder.exId = (TextView)convertView.findViewById(R.id.myId);
holder.exDone = (TextView)convertView.findViewById(R.id.myCount);
holder.exIcon = (ImageView)convertView.findViewById(R.id.myIcon);
holder.btnStart = (Button)convertView.findViewById(R.id.btnStart);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//onClick Row
convertView(OnClickListener);
//onClick Button
holder.btnStart(OnClickListener)
holder.exId.setText("ID: " + exModelList.get(position).getNid());
holder.exBody.setText(exModelList.get(position).getBody());
holder.exTitle.setText(exModelList.get(position).getTitle());
if(exModelList.get(position).getExercise_done().equals("[]")){
holder.exDone.setText(exercise_not_done);
holder.exIcon.setImageResource(R.drawable.exercise_not_started);
}else{
String exercise_count = exModelList.get(position).getExercise_done();
String ex_done = exercise_done + " " + exercise_count + " " + exercise_times_done;
holder.exDone.setText(ex_done);
holder.exIcon.setImageResource(R.drawable.exercise_started);
}
return convertView;
}
public void OnClickListener() {
String nid = exModelList.get(position).getNid();
String title = exModelList.get(position).getTitle();
String body = exModelList.get(position).getBody();
Intent intent = new Intent(ExerciseListActivity.this, ExerciseDetailsActivity.class);
intent.putExtra("nid", nid);
intent.putExtra("title", title);
intent.putExtra("body", body);
startActivity(intent);
}
class ViewHolder{
private TextView exTitle;
private TextView exBody;
private TextView exId;
private ImageView exIcon;
private TextView exDone;
private Button btnStart;
}
}
答案 2 :(得分:0)
如果两个onClickListeners具有相同的功能,那么您也不需要将onClickListener添加到该按钮。只需删除此侦听器,只将其添加到您的行中。即使您单击按钮,它也会起作用。 只需做这样的事情
public class ListAdapter extends ArrayAdapter {
private List<ExerciseListModel> exModelList;
private int resource;
private LayoutInflater inflater;
public ListAdapter(Context context, int resource, List<ExerciseListModel> objects) {
super(context, resource, objects);
exModelList = objects;
this.resource = resource;
inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(resource, null);
holder.exTitle = (TextView)convertView.findViewById(R.id.myTitle);
holder.exBody = (TextView)convertView.findViewById(R.id.myBody);
holder.exId = (TextView)convertView.findViewById(R.id.myId);
holder.exDone = (TextView)convertView.findViewById(R.id.myCount);
holder.exIcon = (ImageView)convertView.findViewById(R.id.myIcon);
holder.btnStart = (Button)convertView.findViewById(R.id.btnStart);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//onClick Row
convertView.setOnClickListener(new View.OnClickListener() {
public void onClick(final View v) {
String nid = exModelList.get(position).getNid();
String title = exModelList.get(position).getTitle();
String body = exModelList.get(position).getBody();
Intent intent = new Intent(ExerciseListActivity.this, ExerciseDetailsActivity.class);
intent.putExtra("nid", nid);
intent.putExtra("title", title);
intent.putExtra("body", body);
startActivity(intent);
}
});
holder.exId.setText("ID: " + exModelList.get(position).getNid());
holder.exBody.setText(exModelList.get(position).getBody());
holder.exTitle.setText(exModelList.get(position).getTitle());
if(exModelList.get(position).getExercise_done().equals("[]")){
holder.exDone.setText(exercise_not_done);
holder.exIcon.setImageResource(R.drawable.exercise_not_started);
}else{
String exercise_count = exModelList.get(position).getExercise_done();
String ex_done = exercise_done + " " + exercise_count + " " + exercise_times_done;
holder.exDone.setText(ex_done);
holder.exIcon.setImageResource(R.drawable.exercise_started);
}
return convertView;
}
class ViewHolder{
private TextView exTitle;
private TextView exBody;
private TextView exId;
private ImageView exIcon;
private TextView exDone;
private Button btnStart;
}
}
编辑:或者您可以关注@ GiuseppeLabanca的代码并从适配器中删除两个onClickListeners。