Autore Topic: problema definizione adapter custom per tablelayout  (Letto 842 volte)

Offline gbu123

  • Utente junior
  • **
  • Post: 74
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    windows 7
problema definizione adapter custom per tablelayout
« il: 29 Agosto 2012, 10:16:09 CEST »
0
ciao
avrei bisogno di definire un adapter personalizzato che prepara un tablelayout fatto così :

table.xml :
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="schermata tabella" />
   
    <Button
        android:id="@+id/ritorna"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="torna" />

     <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="msg" />
   
    <TableLayout
        android:id="@+id/tabella"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
       
        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </TableRow>

    </TableLayout>

</LinearLayout>

ciascuna riga della tabella è definita come 

table_riga.xml :
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listimages_riga"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
   
    <Spinner
        android:id="@+id/spinn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="64dp" />
   
    <TextView
        android:id="@+id/txtView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/spinn"
        android:layout_alignBottom="@+id/spinn"
        android:layout_marginLeft="19dp"
        android:layout_toRightOf="@+id/spinn"
        android:text="TextView" />   
   
</LinearLayout>


l'activity che lo gestisce è :
Codice: [Seleziona]
package com.example.pippo;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

public class TabellaAct extends Activity {
       
    protected Context mContext;
    protected ArrayList<String>  mat1;
    private TableLayout tab1 ;
    private tableAdapter tableAdapt ;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.table);
        mContext = this;
       
        Intent int1 = getIntent();
        // dati passati dall'activity chiamante
              mat1 = int1.getStringArrayListExtra("matrice1");
       
            // Bottone per tornare indietro
            Button ritorna = (Button) findViewById(R.id.ritorna);
            ritorna.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                            Intent myIntent = new Intent(TabellaAct.this,MainActivity.class);
                            TabellaAct.this.startActivity(myIntent);
                //                finish();
                    }
            });
           
       
       // Find the ListView resource.         
       tab1 = (TableLayout) findViewById( R.id.tabella );
       
                   
            if (mat1 != null && mat1.size() > 0)
            {
                  // Collegamento con la sorgente dati da visualizzare. 
                    tableAdapt = new tableAdapter(this, mat1); 
           
           // Set the ArrayAdapter as the ListView's adapter. 
                    tableAdapt.setAdapter( tableAdapt );
           
            }
            else
                    ((TextView)findViewById(R.id.textView2)).setText("vuoto");
    }

}



l'adapter , che non sò come preparare , è :

Codice: [Seleziona]
import android.widget.TextView;

public class tableAdapter extends ArrayAdapter<String> {
  private final Context context;
  private final ArrayList<String> values;
 
  public tableAdapter(Context context, ArrayList<String> values) {
    super(context, R.layout.table_riga, values);
    this.context = context;
    this.values = values;
  }

  //@Override
  //public View getView(int position, View convertView, ViewGroup parent) {
        public View setAdapter(tableAdapter tableAdapt) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View TableRow = inflater.inflate(R.layout.table_riga, parent, false);
    TextView tView2 = (TextView) findViewById(R.id.txtView);
   
    tView2.setText(values.get(position));
   
    return TableRow;
    }

        private TextView findViewById(int txtview) {
                // TODO Auto-generated method stub
                return null;
        }

//        public void setAdapter(tableAdapter tableAdapt) {
                // TODO Auto-generated method stub
//        }
}

qualcuno può aiutarmi ?
grazie , ciao
« Ultima modifica: 29 Agosto 2012, 11:47:54 CEST da gbu123 »