2015-10-16 3 views
-1

У меня есть список с кнопкой в ​​нем. есть ли какой-либо возможный способ проверить, какая кнопка была нажата и в какой позиции списка?Android Listview с кнопкой get Позиция позиция

enter image description here

вот мой код.

final RelativeLayout layoutFooter2 = (RelativeLayout) getLayoutInflater().inflate(R.layout.foodlist, null); 
    final Button btnBack = (Button) layoutFooter2.findViewById(R.id.Back); 
    // buttonadd 
    final Button btnadd = (Button) layoutFooter2.findViewById(R.id.btnaddd); 
    // buttondelete 
    final ListView listView = getListView(); 
    final TextView txvSum = (TextView) layoutFooter.findViewById(R.id.Sum); 
    txvSum.setText(""); 
    listView.invalidateViews(); 
    listView.setTextFilterEnabled(true); 
    listView.addFooterView(layoutFooter); 
    listView.setAdapter(getListAdapter()); 
    // changes have been done here in order to fit the buttons in textview55+ changes to large/foodlist. 
    setListAdapter(new ArrayAdapter<Object>(this, R.layout.foodlist, R.id.textview55, ListItemSalads)); 
    getWindow().getDecorView().setBackgroundColor(Color.BLACK); 

    btnadd.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 

      Toast.makeText(ActivityFoodsSalads.this, "Button Clicked", Toast.LENGTH_SHORT).show(); 

     } 
    }); 

XML файл

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/kati" 
     > 

    <TextView 
    android:id="@+id/textview55" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/listviewborder" 
    android:textColor="#FFFFFF" 
    android:padding="12dp" 
    android:textSize="24sp" > 
    </TextView> 


    <Button 
     android:id="@+id/btnaddd" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="112dp" 
     android:alpha="1" 
     android:background="#3b3974" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:minWidth="90dp" 
     android:text="+" 
     android:textColor="#f1ecef" /> 

Любой совет много appriciated.Cheers.

+0

один совет поставить код, что у попытался – Pavan

+0

Добавьте свой код адаптера и элемент ListView/строки XML на ваш вопрос – petey

+0

ОК я буду делать это сейчас спасибо, ребята. – Kristo

ответ

0

Попробуйте установить щелчок слушателя в вашем getView метод адаптера

Примечание:, так как вы не отправлял свой foodlist.xml, пожалуйста, измените «R.id. buttonId»для ссылки на значение идентификатора, установленного для андроида данной кнопки: идентификатор атрибута в вашем foodlist.xml

// changes have been done here in order to fit the buttons in textview55+ changes to large/foodlist. 
setListAdapter(new ArrayAdapter<ListItemSalads>(this, R.layout.foodlist, R.id.textview55, ListItemSalads) { 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View inflatedView = super.getView(position, convertView, parent); 

     // set a click listener 
     // TODO change "R.id.buttonId" to reference the ID value you set for the button's android:id attribute in foodlist.xml 
     inflatedView.findViewById(R.id.buttonId).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(v.getContext(), "Button 1 clicked for row position=" + position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return inflatedView; 

    } 
}); 
getWindow().getDecorView().setBackgroundColor(Color.BLACK); 
//btnadd.setOnClickListener is not needed anymore 
+0

Hey @Petey спасибо за ваши сообщения, я обновил свой вопрос с помощью xml-файла. Позвольте мне попробовать это решение. – Kristo

0

Я предлагаю вам удалить кнопки внутри TextView и использовать ItemClickListener для прослушивания кликов внутри ListView.

Попробуйте, как показано ниже

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
            long arg3) { 
      // TODO Auto-generated method stub 
      Log.d("Item clicked..position: ",""+arg2);  
    } 

}); 
+0

Позвольте мне попробовать этот @Lal. Спасибо за ваш совет. – Kristo

+0

Что произойдет, если я добавлю две кнопки, хотя в каждой строке списка? как я узнаю, какой из них был нажат, потому что есть только один textview @Lal. – Kristo

+0

Я пробовал то, что вы сказали, но журнал происходит, когда я нажимаю внутри строки не на кнопке @Lal. – Kristo

-2

вы можете установить действие для кнопок. Если вы установили экстренный прослушиватель для списка, он не может получить выбранную позицию

0

В макете установите onclick кнопки, как onClickItemButton.

public void onClickItemButton(View view) { 
    View item = (View) view.getParent(); 
    int pos = listView.getPositionForView(item); 
    long id = listView.getItemIdAtPosition(pos); 
} 
Смежные вопросы