2016-05-13 22 views
-1

Ich habe ein benutzerdefiniertes ListView mit einer Schaltfläche und wenn ich auf eine der Schaltflächen in einer Zeile klicken, möchte ich die Textbeschriftung auf der Listview und für jetzt nur ein Pop-up-Toast damit .ANDROID Wie man value listview item position auf Knopf klicken

Ich habe 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> 

Die Schaltfläche haben"android: onClick =" myClickHandler "" ..

In meiner Tätigkeit i habe dies:

public class ActivityListview erweitert 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(); 

} 

Die Methode:

// 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 in Onclick Taste tun es wollen ..

wie kann ich tun?

Vielen Dank für alle und sorry für mein Englisch

Antwort

0

Sie müssen von SimpleAdapter erweitern, so dass Sie den Verweis auf die Textview in Ihren Zuhörern speichern, die Sie in der getView Methode des Adapters erklären würden.

Wenn Sie Hilfe benötigen Sie den Adapter zu schaffen, werfen Sie einen Blick auf diese andere Frage: Custom Adapter for List View

+0

ein zeigen Sie eine kleine Anleitung/Beispiel meinem Fall ?? –

0
  1. Erstellen Sie eine Klasse, die BaseAdapter erstreckt. Und in der getview-Methode regulieren Sie Ihre Schaltfläche und setzen onClick-Funktion.

    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; 
    

    }