2016-11-10 13 views
1

我在我的ArrayAdapter View中有两个OnClickListeners。我怎么能结合,在ArrayAdapter(查看)在Android上的两个OnClickListener

我有onClick行和onClick按钮,都在同一个ListView中。我想结合他们。为两者制作一个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); 
      } 
     }); 
     //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

您的活动/片段(你申报的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); 
}} 
0

此代码可以帮助你,定义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; 
     } 
    } 
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。