2013-08-21 36 views
0

現在我使用HashMap來從SQLite的增加值,顯示inListview但是當我錯誤方法的getString undefind

map.put("item_title", friends.getString("nickname")); 
map.put("item_fname", friends.getString("fname")); 
map.put("item_lname", friends.getString("lname")); 

錯誤告訴我,這是錯誤 「方法的getString在friendEntry undefind」

這是我在friendEntry

代碼
package com.example.sqlite.entry; 
public class FriendEntry { 
private int id; 
private String fname; 
private String lname; 
private String nickname; 
public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getFname() { 
    return fname; 
} 
public void setFname(String fname) { 
    this.fname = fname; 
} 
public String getLname() { 
    return lname; 
} 
public void setLname(String lname) { 
    this.lname = lname; 
} 
public String getNickname() { 
    return nickname; 
} 
public void setNickname(String nickname) { 
    this.nickname = nickname; 
} 

} 

FriendsListActivity

package com.example.sqlite; 
import java.util.ArrayList; 
import java.util.HashMap; 
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{ 

      ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>(); 
      HashMap<String, String> map; 
      for (int i = 1;i<=friends.size();i++){ 
      // set value for data 
       map = new HashMap<String, String>(); 
       map.put("item_title", friends.getNickname()); 
       map.put("item_fname", friends.getFname()); 
       map.put("item_lname", friends.getLname()); 
       MyArrList.add(map); 
      } 
      //adapter 
      hellolistview.setAdapter(new adapter()); 
     } 
    } 

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 
     holder.title.setText(data.get(position)); 

     return view; 
    } 

    private class Holder{ 
     public TextView title; 
    } 
} 


} 

這是我FriendsDB

package com.example.sqlite.db; 

import java.util.ArrayList; 

import com.example.sqlite.entry.FriendEntry; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 

//ใช้ในการ inert update delete 
public class FriendsDB { 
private FriendsDBHelper helper; 
private SQLiteDatabase db; 

public FriendsDB(Context context){ 
    helper = new FriendsDBHelper(context); 
    db = helper.getWritableDatabase(); 
} 
//insert 
    public long insert(String fname,String lname,String nickname){ 
     ContentValues values = new ContentValues(); 
     values.put(FriendsDBHelper.TABLE_KEY_FNAME, fname); 
     values.put(FriendsDBHelper.TABLE_KEY_LNAME, lname); 
     values.put(FriendsDBHelper.TABLE_KEY_NICKNAME, nickname); 
     return db.insert(FriendsDBHelper.TABLE_NAME, null ,values); 

    } 
//select all 
    public ArrayList<FriendEntry> selectAll(){ 
     ArrayList<FriendEntry> friends = new ArrayList<FriendEntry>(); 
     //  cursor คือ ชุดข้อมูล 
     Cursor cursor = db.rawQuery("SELECT*FROM"+FriendsDBHelper.TABLE_NAME+"WHERE id != ?",new String[]{Integer.toString(0)}); 
     cursor.moveToFirst(); 
     if(cursor.getCount()!=0){ 
      do{ 
       FriendEntry friend = new FriendEntry(); 
       friend.setId(cursor.getInt(cursor.getColumnIndex(FriendsDBHelper.TABLE_KEY_ID))); 
       friend.setFname(cursor.getString(cursor.getColumnIndex(FriendsDBHelper.TABLE_KEY_FNAME))); 
       friend.setLname(cursor.getString(cursor.getColumnIndex(FriendsDBHelper.TABLE_KEY_LNAME))); 
       friend.setNickname(cursor.getString(cursor.getColumnIndex(FriendsDBHelper.TABLE_KEY_NICKNAME))); 
       friends.add(friend); 

      }while(cursor.moveToNext()); 

     } 

     return friends; 
    } 
+0

正如答案中指出的那樣,你的類沒有使用getString方法。你是否把'toString'稱爲從'Object'繼承的。如果你這樣做了,請注意,如果你不覆蓋它,該方法可能不會輸出你期望的結果。沒有你自己的實現,它可能只會打印實例引用。 – Eric

回答

0

使用這樣

for (int i = 1;i<=friends.size();i++){ 
      // set value for data 
       map = new HashMap<String, String>(); 
       map.put("item_title", friends.get(i).getNickname()); 
       map.put("item_fname", friends.get(i).getFname()); 
       map.put("item_lname", friends.get(i).getLname()); 
       MyArrList.add(map); 
      } 
0

你的朋友類不叫getString(string)

使用方法本

map.put("item_title", friends.get(i).getNickname()); 
map.put("item_fname", friends.get(i).getFname()); 
map.put("item_lname", friends.get(i).getLname()); 

要設置你需要調用friends.setNickname("name")因爲你有一個外號以下

public void setNickname(String nickname) { 
    this.nickname = nickname; 
    } 

編輯:我也看到你有這個showAllList(),但你不要在你的活動課上把它叫做任何地方。撥打setContentView(R.layout.friendlist_layout)後致電showAllList()

您在做friends = db.selectAll()之前可能需要做到這一點db = new FriendsDB(ActivityName.this)

+0

非常感謝,是的,我錯過了 –

+0

@ThanapoomNaNakhon你錯過了編輯 – Raghunandan

+0

@ThanapoomNaNakhon建議的一些代碼,你可以在這裏看到評論http://stackoverflow.com/questions/18353974/runtime-error-when-activity -startactivity-約-列表視圖。我已經提到初始化數據庫在這裏的DIT部分 – Raghunandan

1

您可以使用此:

map.put("item_title", friends.getNickname()); 

因爲你已經與吸氣setter方法創建的......而且你還可以得到其他類似..

+0

是@piyush是正確的...請做到這一點。 – dipali

+0

@dipali謝謝.... !!!!! – Piyush

+0

這仍然是錯誤(該方法getNickname()是未定義類型ArrayList ) –