2013-09-25 66 views
0

我在android开发中很新。我将细节添加到我的sqllite表(id,姓名,号码)。现在我试着列出它。我只想列出名字。当点击特定名称时显示特定名称的号码。现在我试着列出名字。我的代码是。Android eclipse中的ListView问题

details.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" > 
<ListView 
    android:cacheColorHint="#00000000" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@android:id/list" 
    android:layout_alignParentLeft="true"> 
</ListView> 
</LinearLayout> 

DetailOperation.java

public class DetailOperations { 
private DataBase dbHelper; 
private String[] DETAILS_TABLE_COLUMNS = { DataBase.DETAIL_ID, DataBase.DETAIL_NAME,DataBase.DETAIL_NO }; 
private SQLiteDatabase database; 
public DetailOperations(Context context) { 
    dbHelper = new DataBase(context); 
} 

public void open() throws SQLException { 
    database = dbHelper.getWritableDatabase(); 
} 

public void close() { 
    dbHelper.close(); 
} 

public List getAllDetails(){ 
    List Details=new ArrayList(); 
    Cursor cursor = database.query(DataBase.DETAILS, 
      DETAILS_TABLE_COLUMNS, null, null, null, null, null); 
    cursor.moveToFirst(); 
    while(!cursor.isAfterLast()){ 
     Detail de=parseDetail(cursor); 
     Details.add(de); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return Details; 

} 
private Detail parseDetail(Cursor cursor) { 
    Detail d = new Detail(); 
    d.setId((cursor.getInt(0))); 
    d.setName(cursor.getString(1)); 
    d.setnumber(cursor.getString(2)); 
    return d; 
    } 
     } 

Details.java

public class Details extends ListActivity { 
private DetailOperations detailDBoperation; 
@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.details); 
    detailDBoperation=new DetailOperations(this); 
    detailDBoperation.open(); 
    List<Detail> values=detailDBoperation.getAllDetails(); 
    List<String> names=new ArrayList<String>(); 
    for(int i=0;i<values.size();i++) 
    { 
     names.add(values.get(i).getName()); 
    } 
    ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,names); 
    // List values=detailDBoperation.getAllDetails(); 
    // ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list ofDetail ->Name); 
    setListAdapter(adapter); 
    setListAdapter(adapter); 
    } 

@Override 
protected void onResume(){ 
    detailDBoperation.open(); 
    super.onResume(); 
} 
@Override 
protected void onPause(){ 
    detailDBoperation.close(); 
    super.onPause(); 
} 
} 

Detail.java

public class Detail { 
private int id; 
private String name; 
private String number; 

public long getId() { return id;} 
public void setId(int id) { this.id = id; } 
public String getName() { return this.name; } 
public void setName(String name) { this.name = name; } 
public String getNumber(){ return this.number; } 
public void setnumber(String number){ this.number=number; } 
    } 

但我得到的输出列表一样,

[email protected] 
    [email protected] 
    [email protected] 
+0

你的意思是当你点击某个特定的名字时,你会得到com.example ...? – KOTIOS

+0

@Monica:没有当details.xml打开我得到这个列表 – neel

回答

1

更改代码就像下面

List values=detailDBoperation.getAllDetails(); 
List<String> names=new ArrayList<String>(); 
for(int i=0;i<values.size();i++) 
{ 
    names.add(values.get(i).getName()); 
} 
ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,names); 
+0

@Sainath:但在的getName – neel

+0

错误显示了你正在 –

+0

误差列表替换所有的表声明细节=新的ArrayList () ; –

0

只需通过添加

Details.add(de.toString()); 
+0

得到了相同的输出 – neel

0

这里
getAllDetails转换您的数组的字符串()的返回清单详细信息,它是Detail de类型Object的列表。您需要传递详细信息列表 - > ArrayAdapter中的名称列表adapter = new Arr ayAdapter(this,android.R.layout.simple_list_item_1,Detail - > Name列表);

+0

有详细名单的语法错误 - >名称 – neel

+0

这是不完整的语句我想说你推荐的通过类似列表的字符串列表 DetailNAme = new ArrayList (); –