2016-07-26 3 views
0

私はここにバインドされています。私はCustomItapterにOnItemClickListenerを統合したいので、アイテムがクリックされると、メッセージや何かが表示されます。しかし、私はそれをどこに設定するか分からない。私はチュートリアルの集まりとここにいくつかの投稿を見てきましたが、それは私がもっと混乱させるだけです。だから私はそれを動作させるためにどのように設定する必要があるのか​​、どのようにすればよいかについての指針が必要です。ここに私のコードは次のとおりです。CustomItapterにOnItemClickListenerを追加する方法

MainActivity.java

ListView listView; 
listView = (ListView) findViewById(R.id.list_item); 
new ReadRSS(MainActivity.this, listView, "http://malaysiakini.com/en/news.rss").execute(); 

ReadRSS.java

@Override 
protected void onPostExecute(Void aVoid) { 
    //Dismiss progress dialog 
    super.onPostExecute(aVoid); 
    progressDialog.dismiss(); 



    if (feedItems != null) { 
     CustomAdapter customAdapter = new CustomAdapter(context,R.layout.activity_listview,feedItems); 
     listView.setAdapter(customAdapter); 

    }  

} 

CustomAdapter.java

public class CustomAdapter extends ArrayAdapter<FeedItem> { 

public CustomAdapter(Context context, int textViewResourceId) { 
    super(context, textViewResourceId); 
} 

public CustomAdapter(Context context, int resource, List<FeedItem> items) { 
    super(context, resource, items); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View v = convertView; 

    if (v == null) { 
     LayoutInflater vi; 
     vi = LayoutInflater.from(getContext()); 
     v = vi.inflate(R.layout.activity_listview, null); 
    } 

    FeedItem p = getItem(position); 

    if (p != null) { 
     TextView tt1 = (TextView) v.findViewById(R.id.title_text); 
     TextView tt2 = (TextView) v.findViewById(R.id.date_text); 

     if (tt1 != null) { 
      tt1.setText(p.getTitle()); 
     } 

     if (tt2 != null) { 
      tt2.setText(p.getPubDate()); 
     } 
    } 

    return v; 
} 
} 

答えて

2

あなたの質問への直接的な答えではありませんが、自分のコード例では、それを見てアイデアを得ることができます。

ListAdapter adapter = new ArrayAdapter<String>(this,R.layout.listword,R.id.wordView1, companies); 

    ListView listView = (ListView) findViewById(R.id.secondListView1); 

    listView.setAdapter(adapter); 

    // Item Click listener 

    listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> ok, View v, int position, long id){ 

      // Do your stuff here 

     } 
    }); 
0

あなたは、アダプタの内部でそれを設定していませんが、あなたを定義するあなたの活動の中でListView:

ただ、このような
ListView listView = (ListView)findViewById(R.id.list_item); 
new ReadRSS(MainActivity.this, listView, "http://malaysiakini.com/en/news.rss").execute(); 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // your code here 
      } 
     } 
0

は、それが役に立てば幸い:

public class CustomAdapter extends ArrayAdapter<FeedItem> implements OnClickListener{ 
    private Context mContext; 
    public CustomAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
     mContext = context; 
    } 

    public CustomAdapter(Context context, int resource, List<FeedItem> items) { 
     super(context, resource, items); 
      mContext = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View v = convertView; 

     if (v == null) { 
      LayoutInflater vi; 
      vi = LayoutInflater.from(getContext()); 
      v = vi.inflate(R.layout.activity_listview, null); 
     } 

     FeedItem p = getItem(position); 
     v.setTag(p); 
     v.setOnClickListener(this); 
     if (p != null) { 
      TextView tt1 = (TextView) v.findViewById(R.id.title_text); 
      TextView tt2 = (TextView) v.findViewById(R.id.date_text); 

      if (tt1 != null) { 
       tt1.setText(p.getTitle()); 
      } 

      if (tt2 != null) { 
       tt2.setText(p.getPubDate()); 
      } 
     } 

     return v; 
    } 
    @Override 
    public void onClick(View v){ 
     FeedItem p = (FeedItem) v.getTag(); 
     // TODO,do something with p and mContext 
    } 

} 

しかし、私はあなたがこの仕事をするためにlistview.setOnItemClickListener(listener)を使うべきだと思います。

0

CustomAdapterクラスの個々のコンポーネントに対してタスクを実行できます。以下のコードを確認してください。

public class CustomAdapter extends ArrayAdapter<FeedItem> { 
public CustomAdapter(Context context, int textViewResourceId) { 
    super(context, textViewResourceId); 
} 
public CustomAdapter(Context context, int resource, List<FeedItem> items) { 
    super(context, resource, items); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 

{ 

    View v = convertView; 

    if (v == null) { 
     LayoutInflater vi; 
     vi = LayoutInflater.from(getContext()); 
     v = vi.inflate(R.layout.activity_listview, null); 
    } 

    FeedItem p = getItem(position); 

    if (p != null) { 
     TextView tt1 = (TextView) v.findViewById(R.id.title_text); 
     TextView tt2 = (TextView) v.findViewById(R.id.date_text); 

     if (tt1 != null) { 
      tt1.setText(p.getTitle()); 
     } 

     if (tt2 != null) { 
      tt2.setText(p.getPubDate()); 
     } 
     tt1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     // Perform your task 

     }); 
     tt2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     // Perform your task 

     }); 


    } 

    return v; 
} 
} 
0

このコードは、設定したアダプター方法の下であなたのアクティビティに書き込んでください。

セットアダプタ方法

private void setAdapter() { 
    try { 
     DoctorAppointmentListAdapter doctorAppointmentListAdapter = new DoctorAppointmentListAdapter(getContext(), doctorAppointmentObjectArrayList, selectedItemClickListener, screen); 
     appointmentListView.setAdapter(doctorAppointmentListAdapter); 
    }catch (Exception e){} 
} 

コスチュームをクリックしてメソッド

//ListAdapter Click Listener 
DoctorAppointmentListAdapter.SelectItemClickListener selectedItemClickListener = new DoctorAppointmentListAdapter.SelectItemClickListener() { 

    @Override 
    public void itemClickedAtIndex(int index, String operation) { 
     if (operation.equalsIgnoreCase("00")) { 
      m_handler.removeCallbacks(m_handlerTask); 
      viewDetailsScreen(index); 
     } else if (operation.equalsIgnoreCase("11")) { 
      m_handler.removeCallbacks(m_handlerTask); 
      //Video Call Operation 
      patirntId = doctorAppointmentObjectArrayList.get(index).getAppointment_patient_id(); 
      videocallService(doctorAppointmentObjectArrayList.get(index).getAppointment_patient_id(), doctorAppointmentObjectArrayList.get(index).getAppointment_id()); 
     } else if (operation.equalsIgnoreCase("33")) { 
      m_handler.removeCallbacks(m_handlerTask); 
      //Video Call Operation 
      patirntId = doctorAppointmentObjectArrayList.get(index).getAppointment_patient_id(); 
      videocallCompletedService(doctorAppointmentObjectArrayList.get(index).getAppointment_patient_id(), doctorAppointmentObjectArrayList.get(index).getAppointment_id()); 
     } else if (operation.equalsIgnoreCase("22")) { 
      m_handler.removeCallbacks(m_handlerTask); 
      //Phone Call Operation 
      if (doctorAppointmentObjectArrayList.get(index).getPatient_contact_no().length() > 0) { 
       Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + doctorAppointmentObjectArrayList.get(index).getPatient_contact_no())); 
       startActivity(intent); 
      } else { 

      } 
     } 
    } 
}; 

これは、アダプタクラス

public class DoctorAppointmentListAdapter extends BaseAdapter { 

private LayoutInflater inflater = null; 
private Context context; 
private int screen; 
private ArrayList<DoctorAppointmentObject> doctorAppointmentObjectArrayList; 
private SelectItemClickListener itemClickListener; 

public DoctorAppointmentListAdapter(Context context, ArrayList<DoctorAppointmentObject> doctorAppointmentObjectArrayList, SelectItemClickListener listener, int screen) { 
    this.context = context; 
    this.screen = screen; 
    this.doctorAppointmentObjectArrayList = doctorAppointmentObjectArrayList; 
    inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    try { 
     if (itemClickListener != null) { 
      itemClickListener = null; 
     } 
     itemClickListener = listener; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 


@Override 
public int getCount() { 
    return doctorAppointmentObjectArrayList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

public interface SelectItemClickListener { 
    public void itemClickedAtIndex(int index, String operation); 
} 

private class ViewHolder { 
    private TextView doctorNameTextView, numberTextView, datetimeTextView, enteryTextView; 
    private TextView viewDetailTextView, videoCallTextView, phoneCallTextView; 
    private CircleImageView profile_image; 
    private ImageView onlineStatusImageView; 
    private CircularProgressView progress_view; 
} 

ViewHolder holder = null; 

@Override 
public View getView(final int i, View convertView, ViewGroup parent) { 

    if (convertView == null) { 

     convertView = inflater.inflate(R.layout.adapter_doctor_appointment_list, parent, false); 

     holder = new ViewHolder(); 
     holder.doctorNameTextView = (TextView) convertView 
       .findViewById(R.id.doctorNameTextView); 
     holder.numberTextView = (TextView) convertView 
       .findViewById(R.id.numberTextView); 
     holder.datetimeTextView = (TextView) convertView 
       .findViewById(R.id.datetimeTextView); 
     holder.enteryTextView = (TextView) convertView 
       .findViewById(R.id.enteryTextView); 

     holder.viewDetailTextView = (TextView) convertView 
       .findViewById(R.id.viewDetailTextView); 
     holder.videoCallTextView = (TextView) convertView 
       .findViewById(R.id.videoCallTextView); 
     holder.phoneCallTextView = (TextView) convertView 
       .findViewById(R.id.phoneCallTextView); 


     holder.profile_image = (CircleImageView) convertView 
       .findViewById(R.id.profile_image); 

     holder.progress_view = (CircularProgressView) convertView.findViewById(R.id.progress_view); 

     holder.onlineStatusImageView = (ImageView) convertView.findViewById(R.id.onlineStatusImageView); 
     holder.onlineStatusImageView.setVisibility(View.INVISIBLE); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    if (screen == 1) { 
     holder.videoCallTextView.setVisibility(View.GONE); 
    } 

    try { 
     Picasso.with(context).load(doctorAppointmentObjectArrayList.get(i).getPatient_profile_pic()).into(holder.profile_image, new Callback() { 
      @Override 
      public void onSuccess() { 
       holder.progress_view.setVisibility(View.GONE); 
      } 

      @Override 
      public void onError() { 
       holder.progress_view.setVisibility(View.GONE); 
       holder.profile_image.setImageResource(R.mipmap.ic_launcher); 
      } 
     }); 
    } catch (Exception e) { 
     holder.profile_image.setImageResource(R.mipmap.ic_launcher); 
     holder.progress_view.setVisibility(View.GONE); 
     e.printStackTrace(); 
    } 

    holder.doctorNameTextView.setText(doctorAppointmentObjectArrayList.get(i).getPatient_display_name()); 
    holder.numberTextView.setText(doctorAppointmentObjectArrayList.get(i).getPatient_contact_no()); 

    if (doctorAppointmentObjectArrayList.get(i).getAppointment_time().equalsIgnoreCase("")) { 
     holder.numberTextView.setText(""); 
    } else { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); 
     Date testDate = null; 
     try { 
      testDate = sdf.parse(doctorAppointmentObjectArrayList.get(i).getAppointment_time()); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy hh:mm a"); 
     String newFormat = formatter.format(testDate); 
     holder.numberTextView.setText("" + newFormat); 
    } 
    holder.datetimeTextView.setText(doctorAppointmentObjectArrayList.get(i).getAppointment_reason()); 
    if (screen==0){ 
     holder.enteryTextView.setText("Entry Time :" + doctorAppointmentObjectArrayList.get(i).getAppointment_entry_time()); 
    }else { 
     holder.enteryTextView.setText(""); 
    } 

    holder.viewDetailTextView.setId(i); 
    holder.viewDetailTextView.setOnClickListener(viewDetailSelectedListener); 

    holder.videoCallTextView.setId(i); 
    holder.videoCallTextView.setOnClickListener(videoCallSelectedListener); 

    holder.phoneCallTextView.setId(i); 
    holder.phoneCallTextView.setOnClickListener(phoneCallSelectedListener); 

    return convertView; 
} 

View.OnClickListener viewDetailSelectedListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      int index = (Integer) v.getId(); 
      itemClickListener.itemClickedAtIndex(index, "00"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

View.OnClickListener videoCallSelectedListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      int index = (Integer) v.getId(); 
      if (screen == 2) { 
       itemClickListener.itemClickedAtIndex(index, "33"); 
      } else { 
       itemClickListener.itemClickedAtIndex(index, "11"); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

}; 

View.OnClickListener phoneCallSelectedListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      int index = (Integer) v.getId(); 
      itemClickListener.itemClickedAtIndex(index, "22"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

}; 

} 
です