Frage

Aktualisiert

Ich versuche, die aus der Datenbank abgerufenen Daten in einer Listenansicht zu drucken. Für eine Weile druckte meine Anwendung für jede Daten in der Datenbank eine Zeile in der Listenansicht. Wenn also 10 Daten in der Datenbank vorhanden sind, druckt die App 10 Zeilen, die jeder Zeile der Datenbank entsprechen. Hier ist eine Ansicht, wie es gedruckt wird.

Das neue Bild, wie es jetzt aussieht:

alt text

Aber es ist nicht so, dass die Daten so gedruckt werden, wie ich möchte. Ich möchte eine Spalte der Zeile in einer bestimmten Textansicht drucken, aber sie zeigt nichts.

Die Aktivität bewertet die Methode ruft also die Methode auf selectTopCalls() und erstellt eine Liste, die die Liste empfängt, die diese Methode zurückgibt. Und dann übergeben ich diese Liste an den Listadapter.

Nun, ich habe diese Aktivität benannt Bewertetcalls.java:

public class RatedCalls extends Activity {

private static final String LOG_TAG = "RatedCalls";
private CallDataHelper cdh;
private ListView listview;
private ArrayList<String> ratedCallsList;
private MyListAdapter listAdapter;
private View view;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    Log.i(LOG_TAG, "calling from onCreate()");
    cdh = new CallDataHelper(this);

    startService(new Intent(this, RatedCallsService.class));

    setBasicContent();

}

public void setBasicContent() {
    listview = (ListView) findViewById(R.id.list_view);     

    ratedCallsList = this.cdh.selectTopCalls();     

    Log.i(LOG_TAG, "ratedCallsList size: " + ratedCallsList.size());        
    listAdapter = new MyListAdapter(this, this, R.id.list_view, ratedCallsList);
    listview.setAdapter(listAdapter);   
   }
}

Ich habe diese Klasse, eine Listenadapterklasse mit dem Namen MyListadapter.java:

    public class MyListAdapter extends ArrayAdapter { //--CloneChangeRequired

    private ArrayList mList;
    private Context mContext;
    private Activity mActivity; 
    private int selectedPos = -1;   // init value for not-selected
    private ArrayList<String> ratedCallsList;
    private CallDataHelper cdh;

    public void setSelectedPosition(int pos){
        selectedPos = pos;
        notifyDataSetChanged();
    }
    public int getSelectedPosition(){
        return selectedPos;
    }

    public MyListAdapter(Context context, Activity activity, int textViewResourceId, ArrayList list) {
        super(context, textViewResourceId, list);
        this.mList = list;
        this.mContext = context;
        this.mActivity = activity;
    }

    public View getView(int position, View convertView, ViewGroup parent){
        View view = convertView;
        try{

            if (view == null) {
                LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = vi.inflate(R.layout.list_item, null);    // --CloneChangeRequired(list_item)
            }

            // setting STRIP BG         
            if(position == selectedPos){
                view.findViewById(R.id.rlt_main).setBackgroundColor( Color.rgb(062, 076, 120) );
            }else if(position%2==0){
                view.findViewById(R.id.rlt_main).setBackgroundColor( Color.rgb(226, 231, 239) );
            }else{
                view.findViewById(R.id.rlt_main).setBackgroundColor( Color.rgb(200, 210, 223) );
            }   

            setViews(position, view);

        }catch(Exception e){
            //Log.i(MyListAdapter.class.toString(), e.getMessage());                
        }
        return view;
    }   

    public void setViews(int position, View view) {         

        cdh = new CallDataHelper(mContext);

        if(mContext.getClass().equals((RatedCalls.class))){

            ratedCallsList = this.cdh.selectTopCalls();
            Log.i("MYLISTADAPTER", "size " + ratedCallsList.size());
            if (ratedCallsList != null) {

                    ((TextView) view.findViewById(R.id.contact_name)).setText(ratedCallsList.get(0));
                    ((TextView) view.findViewById(R.id.phone_number)).setText(ratedCallsList.get(1));
                    ((TextView) view.findViewById(R.id.duration)).setText(ratedCallsList.get(2));
                    ((TextView) view.findViewById(R.id.date)).setText(ratedCallsList.get(3));
            }

        }else if(mContext.getClass().equals(RatedContacts.class)){

            final PublishersBO listPublisher = (PublishersBO) mList.get(position);
            if (listPublisher != null) {
                //--setting list_item views
                ((TextView) view.findViewById(R.id.contact_name)).setText(listPublisher.getName());
                ((TextView) view.findViewById(R.id.phone_number)).setText(listPublisher.getEmail());
                //--onClickListener
                view.setOnClickListener(new OnClickListener() {
                    public void onClick(View arg0) {
                        Intent myIntent = new Intent(mContext,RatedContacts.class);
                        myIntent.putExtra("NAME", listPublisher.getName());                                                     
                        myIntent.putExtra("ACTIVITY_NAME", mContext.getClass().toString());
                        mContext.startActivity(myIntent);
                        mActivity.finish();
                    }
                });
            }

        }       
    }
}

Die Methode, die die Daten aus der Datenbank abrufen, befindet sich in einer getrennten Klasse, die sich mit der SQLite -Funktion befasst. Dies ist die Methode:

public ArrayList<String> selectTopCalls() {

    ArrayList<String> list1 = new ArrayList<String>();
    Cursor cursor = this.db.query(TABLE_NAME, null, null, null, null, null,
            "duration desc");

    if (cursor.moveToFirst()) {
        do {                
            //if (cursor.getString(2) != "") {

                cdObj = new CallData();

                list1.add(cursor.getString(2));
                list1.add(cursor.getString(4));
                list1.add(cursor.getString(5));
                list1.add(cursor.getString(6));                     

        } while (cursor.moveToNext());
    }
    if (cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
    return list1;
}

Und hier ist die XML -Datei für die genannte Ansicht list_item.xml:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="67px" 
android:id="@+id/rlt_main"
android:layout_toRightOf="@+id/iv_forward">

<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true"
    android:id="@+id/iv_forward" 
    android:src="@drawable/icon"
    android:layout_alignParentLeft="true">
</ImageView>                

<TextView 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/phone_number" 
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/iv_forward"
    android:layout_alignBottom="@+id/iv_forward">
</TextView> 

<TextView 
    android:layout_height="wrap_content"        
    android:layout_width="wrap_content" 
    android:id="@+id/duration" 
    android:layout_alignBottom="@+id/phone_number"
    android:layout_alignRight="@+id/phone_number"
    >
</TextView>

<TextView 
    android:layout_height="wrap_content"        
    android:layout_width="wrap_content" 
    android:id="@+id/date" 
    android:layout_alignBottom="@+id/contact_name"
    android:layout_alignRight="@+id/contact_name"
    >
</TextView>

<TextView 
    android:layout_height="wrap_content"  
    android:layout_width="fill_parent" 
    android:id="@+id/contact_name" 
    android:textSize="20px" 
    android:layout_toRightOf="@+id/iv_forward"
    android:layout_alignParentTop="true">
</TextView>

Daher möchte ich die Daten in den Textansichten in der Aktivität drucken, aber ich weiß nicht, wo ich den Text festlegen soll, in welcher Klasse, wenn in der MyListadapter -Klasse oder in der Aktivität.

Vielen Dank.

War es hilfreich?

Lösung


Ich habe nur wenige Änderungen an Ihrem Code vorgenommen, hier überprüfen.

https://gist.github.com/683b84af9d01bf18fe3d

Vielen Dank.........

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top