-1

今、私はアダプターを使用しようとしています。しかし、データから値を設定する方法がわかりません。友人の場合= db.selectall、友人の値には3つの値(fname、lname、nickname)があるため、私の質問は値を設定する方法です(fname/lname/nicknameまたは1つまたは他の)私のコードは次のようになります::::

package com.example.sqlite;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.sqlite.db.FriendsDB;
import com.example.sqlite.entry.FriendEntry;

public class FriendsListActivity extends Activity {
private Context context;
private FriendsDB db;
private ArrayList<FriendEntry> friends;
    private ArrayList<String> data;
private TextView hellotext;
private ListView hellolistview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.friendlist_layout);

}
public void showAllList(){
    //view matching
    hellotext = (TextView) findViewById(R.id.hellotext);
    hellolistview = (ListView) findViewById(R.id.hellolistview);
    //select data
    friends = db.selectAll();
        if(friends.size()==0){
            Toast.makeText(context,"You dont have any friend.",Toast.LENGTH_SHORT).show();
        }else{
            data = new ArrayList<String>();
            for (int i = 1;i<=friends.size();i++){
            // set value for data   


            **data.add("Your Name is "+friends["fname"]);<< I want to add data like this .How to correct**  


            }
        }
    }

private class adapter extends BaseAdapter{
    private Holder holder;
    @Override
        //ดาต้ามีกี่แถว
    public int getCount() {
        // TODO Auto-generated method stub
        return friends.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        //create
        if( view == null){
            view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_layout,null);
            holder = new Holder();
            holder.title = (TextView) view.findViewById(R.id.item_title);
            view.setTag(holder);
        }else{
            holder = (Holder) view.getTag();
        }

        //assign data / wait for data 

        return null;
    }

    private class Holder{
            //view แต่ละตัวเก็บค่าอะไรบ้าง
        public TextView title;
    }
}


}
4

2 に答える 2

0

ほとんど大丈夫ですが、Friends クラスを使用する代わりに HashMap 型の ArrayList を使用することをお勧めします。

これにより、アプリケーションの負担が軽減されます。

ArrayList<HashMap<Object,String>> list=new  ArrayList<HashMap<Object,String>>();
HashMap<Object,String> hm;

select all メソッドで

do{
   hm=new HashMap<Object,String>();
   hm.add(Key_Name,"retrieve the value from cursor here");
   list.add(hm);
 }while(c.movetonect());
return list;

あなたの活動で

    ArrayList<HashMap<Object,String>> list=new  ArrayList<HashMap<Object,String>>();
    list=db.selectAll();
    HashMap<Object,String> hm;
    for (int i=0;i<list.length;i++){
     hm=list.getIndex(i);    //retrieve all the vaalues  here

    }

リストを受け入れるリストアダプターを使用して、リストビューにデータを入力します

于 2013-08-20T21:14:22.330 に答える