I have a custom ListView with a button and when I click either button on any row I want to get the text label on the Listview and for now just popup a toast with it.
I have list_item.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow android:layout_width="fill_parent"
android:id="@+id/TableRow_list_item"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:layout_width="0dp"
android:layout_height="80dp"
android:id="@+id/imageView_logo_utente"
android:src="@drawable/icon_user_green"
android:layout_column="1"
android:layout_weight="1"/>
<TextView
android:textColor="#000000"
android:id="@+id/nomec"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Nome Completo"
android:layout_weight="2"
android:gravity="center"
android:height="40dp"
android:textSize="17dp"
android:layout_column="1"/>
<TextView
android:textColor="#000000"
android:id="@+id/tiposogget"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Tipo Soggetto Etichetta"
android:layout_weight="2"
android:gravity="center"
android:height="40dp"
android:textSize="17dp"
android:layout_column="1"/>
<TextView
android:textColor="#000000"
android:id="@+id/cf"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Codice Fiscale"
android:gravity="center"
android:height="40dp"
android:textSize="17dp"
android:layout_column="1"
android:layout_weight="2" />
<TextView
android:textColor="#000000"
android:id="@+id/idsogg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="ID Soggetto"
android:layout_weight="1"
android:gravity="center"
android:height="40dp"
android:textSize="17dp"
android:layout_column="1"/>
<Button
android:layout_width="0dp"
android:layout_height="90dp"
android:id="@+id/button_scan"
android:layout_column="1"
android:layout_weight="0.63"
android:height="140dp"
android:background="@drawable/custom_button_scanner"
android:onClick="myClickHandler"
android:focusable="false"/>
</TableRow>
The button have "android:onClick="myClickHandler""..
In my activity i have this:
public class ActivityListview extends AppCompatActivity {
//************VARIABILI GLOBALI*************
ListView lv;
static final String KEY_CF = "CodiceFiscale";
static final String KEY_ID = "IDSoggetto";
static final String KEY_NOMEC = "NomeCompleto";
static final String KEY_TIPOSOGGET = "TipoSoggettoEtichetta";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_scanner);
lv = (ListView) findViewById(R.id.listView_resultXML);
Example();
}
public void Example() {
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[]{KEY_CF, KEY_ID, KEY_NOMEC, KEY_TIPOSOGGET}, new int[]{
R.id.cf, R.id.idsogg, R.id.nomec, R.id.tiposogget});
// selecting single ListView item
ViewGroup headerview = (ViewGroup) getLayoutInflater().inflate(R.layout.header_listview, lv, false);
lv.setAdapter(null);
lv.addHeaderView(headerview);
lv.setAdapter(adapter);
public void myClickHandler(View v)
{
// HERE I WOULD LIKE TO get vaule as method setOnItemClickListener
Toast.makeText(ActivityListviewScanner.this, "value is:", Toast.LENGTH_LONG).show();
}
The method:
// listening to single listitem click
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//Metodo per prelevare dati al click sulla casella della ListView
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String string_example = ((TextView) view.findViewById(R.id.cf)).getText().toString();
}
});
}
}
i want do it in onclick button..
how can I do?
Thankyou for all and sorry for my english
You will need to extend from SimpleAdapter so you can save the reference to the textview in your listener, which you would declare inside the getView method of the adapter.
If you need help creating the adapter, take a look at this other question: Custom Adapter for List View
Create a class which extends BaseAdapter. And in the getview method regiter your button and set onClick function.
public class Holder { TextView tv1; TextView tv2; TextView tv3; TextView tv4; Button bt; ImageView img; } @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Holder holder = new Holder(); View rowView; rowView = inflater.inflate(R.layout.list_item, null); holder.tv1 = (TextView) rowView.findViewById(R.id.nomec); holder.tv2 = (TextView) rowView.findViewById(R.id.tiposogget); holder.tv3 = (TextView) rowView.findViewById(R.id.cf); holder.tv4 = (TextView) rowView.findViewById(R.id.idsogg); holder.img = (ImageView) rowView.findViewById(R.id.imageView_logo_utente); holder.bt = (Button) rowView.findViewById(R.id.button_scan); holder.bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //write your code here } }); return rowView;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.