2017-12-13 14 views
0

ListViewにはいくつかの行があります。 ItemClickListenerで私は、ユーザーがあなたが項目のためのonclickを呼び出しされていないメッセージをクリックするか、 リストビューで行の特定の項目を取得する

+2

可能な重複:あなたのレイアウト/アダプタのコードを見て素敵だっただろうが、基本的なカスタムアダプタ(効率のため、ViewHolderパターンを使用して)は、このようなものを見ることができますListViewで行の単一項目を取得する方法](https://stackoverflow.com/questions/11145920/android-how-to-get-single-item-of-a-row-in-listview) –

+1

を入力してくださいあなたのアダプタコード –

答えて

0

ボタンを呼び出すときにトーストを表示したい項目行の

lstcontact.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      String v=lstcontact.getItemAtPosition(position).toString(); 
      if(view.getId()==R.id.btncall) { 
       Toast.makeText(MainActivity.this, "Make A Call at " + position, Toast.LENGTH_SHORT).show(); 
      }else if(view.getId()==R.id.btnmess) { 
       Toast.makeText(MainActivity.this, "Make A Message at " + position, Toast.LENGTH_SHORT).show(); 
      } 
     } 


    }); 

をクリックするとアクセスしたいですその行にこれを行うには、アダプターのリスナーを実装する必要があります。

public interface CustomListener{ 
    void onSomeItemClick(View view); 
} 

このコンストラクターでは、このリスナーを初期化する必要があります。あなたがonSomeItemClick方法あなたのアダプタのgetView()あなたがonClickListenerを実装する必要がで

@Override 
public void someItemClick(View view){ 
    if(view.getId()==R.id.btncall) { 
     Toast.makeText(MainActivity.this, "MAke A Call at "+position, Toast.LENGTH_SHORT).show(); 
    }else if(view.getId()==R.id.btnmess) { 
     Toast.makeText(MainActivity.this, "MAke A Message at "+position, Toast.LENGTH_SHORT).show(); 
    } 
} 

をオーバーライドする必要がリスナーにその後

adapter = new YourAdapter(this,this,list); 

を実装する必要がありますが、このアダプタを作成する活動の

public YourAdapter(Context context, CustomListener listener, List<YourClass> list){ 
    this.context = context; 
    this.listener = listener; 
    this.list = list; 
} 

どのビューでクリックするかを指定します。

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(listener!=null{ 
      listener.onSomeItemClick(v); 
     }  
    } 
}); 
0

onItemClickのビューパラメータは、(すべてのボタンと内部のすべてのものを含む)全体のListViewの行であるので、view.getId()== R.id.btncallは意味を成さするつもりはありません。

カスタムアダプタのボタンのonClickListenerにトーストを設定するのが最適です。 、

public class MyListAdapter extends ArrayAdapter<YourItemType> { 

static class ViewHolder { 
    private Button callButton; 
    private Button messageButton; 
    // declare any other views you want to control here 
} 


public MyListAdapter(Context context, List<YourItemType> items) { 
    super(context,0,items); 
} 

@NonNull 
@Override 
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.your_listview_layout, null); 
     holder = new ViewHolder(); 
     holder.callButton = (Button) convertView.findViewById(R.id.btncall); 
     holder.messageButton = (Button) convertView.findViewById(R.id.btnmess); 
     // find views for any other views in your ViewHolder/Listview layout 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    YourItemType item = getItem(position); 
    holder.callButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // simple say what position is 
      Toast.makeText(getContext(), "Make A Call at "+String.valueOf(position), Toast.LENGTH_SHORT).show(); 
      // do something with the item itself 
      Toast.makeText(getContext(), "This toast is for info on the item, which is "+ item.toString(), Toast.LENGTH_SHORT).show(); 

     } 
    }); 
    holder.messageButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // simple say what position is 
      Toast.makeText(getContext(), "Make A Call at "+String.valueOf(position), Toast.LENGTH_SHORT).show(); 
      // do something with the item itself 
      Toast.makeText(getContext(), "This toast is for info on the item, which is "+ item.toString(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    return convertView; 
} 

} [アンドロイドの

関連する問題