نمایش اطلاعات ارایه دوبعدی در لیست ویو
سلام
یک ارایه دوبعدی دارم که میخوام در لیست نمایش بده اما اطلاعات صحیح نمایش نمیده
item =new String[][] {{"1","2"},{"2","2"}};
list1=(ListView) findViewById(R.id.listView1);
//
list1.setAdapter(new ArrayAdapter<String[]>(this,android.R.layout.simple_list_item_2,item) );
و در لیست ویو در تمام خط ها این پیام نشون میده r.java.long
نقل قول: نمایش اطلاعات ارایه دوبعدی در لیست ویو
سلام
شما می تونید:
1- یک تابع بنویسید، و آرایه 2 بعدی رو به یک آرایه معمولی تبدیل کنید(برای اون تبدیل یک منطق در نظر بگیرید).
2- از کلاس BaseAdapter استفاده کنید و از اون کلاس محتوا رو به لیست اضافه کنید.
3- از یک کلاس واسط استفاده کنید. برای مثال :
class MyClass {
private String one;
private String two;
public void setOne(String one){
this.one = one ;
};
public void setTwo(String two){
this.two = two ;
};
public String getOne(){
return this.one ;
};
public String getTwo(){
return this.two ;
};
}
نقل قول: نمایش اطلاعات ارایه دوبعدی در لیست ویو
ممنون از راهنماييتون
اما من از اين روش هم رفتم اما باز هم اطلاعات صحيح نمايش نميداد
شما تا حالا اينطوري امتحان كرديد؟ و از اين روش جواب گرفتيد؟
البته بگم من اطلاعات دارم از resultset ميگيرم و در اينجا قرار ميدم
نقل قول: نمایش اطلاعات ارایه دوبعدی در لیست ویو
نقل قول:
نوشته شده توسط
sara_traveler
ممنون از راهنماييتون
اما من از اين روش هم رفتم اما باز هم اطلاعات صحيح نمايش نميداد
شما تا حالا اينطوري امتحان كرديد؟ و از اين روش جواب گرفتيد؟
البته بگم من اطلاعات دارم از resultset ميگيرم و در اينجا قرار ميدم
تمامی 3 روش بالا جواب می دهد !
برای مثال روش اول، اون آرایه رو به تابع مورد نظر ارسال کنید، و اون تابع باید کارش
این باشد که تمامی محتوای آرایه عددی شما رو بخواند و به ازای هر یک، به یک
String تبدیل کند و داخل یک ArrayString قرار دهد سپس اون ArrayString رو برای
شما بفرستد. این ArrayString الان به عنوان پارامتر Adapter شما قرار می گیره .
و همچنین زمانی که کاربر itemی رو در ListView شما انتخاب کرد و دوباره
بخواهید همان مقدار قبلی رو بدست بیارید باید برعکس مراحل بالا رو انجام
دهید. به همین خاطر گفتم از یک منطق خاص استفاده کنید.
نقل قول: نمایش اطلاعات ارایه دوبعدی در لیست ویو
ببینید من الان داخل ارایه اینطوری پر کردم
String[][] array = new String[10][10];
ResultSet rs = stmt.executeQuery("select * from tafzil_pish_sabt
");
int i = 0;
while(rs.next())
{
array[i][1]= rs.getString(2).toString();
array[i][2]= rs.getString(3).toString();
array[i][3]= rs.getString(4).toString();
array[i][4]= rs.getString(5).toString();
// array[i][5]= rs.getString(6).toString();
// array[i][6]= rs.getString(7).toString();
i ++;
}
/list1.setAdapter(new ArrayAdapter<String[]>(this,android.R.layout.simple_list_item_1,Arrays. toString(array )));
اما چیزی که در لیست ویو نمایش میده در تمام خطوط مینویسه
ljava.lang.string@ 41632
من فکر میکنم در جایی تبدیل اطلاعات من مشکل داره
البته وقتی از اطلاعات ارایه print میگیرم اطلاعات صحیح نمایش میده اما در لیست ویو نه
نقل قول: نمایش اطلاعات ارایه دوبعدی در لیست ویو
مشکل شما فقط یک تابع است !
من یک نمونه مثال ساده میزنم :
public class MainActivity extends Activity {
String[][] array ;
ArrayList<String> marray ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
marray = new ArrayList<String>();
array = new String[10][10];
array[0][1]= "one" ;
array[1][2]= "two" ;
array[2][3]= "three" ;
array[3][4]= "four" ;
marray = changeToArrayList(array);
//your adapter : adapter(this,marray);
//test :
Log.e("My list :",
marray.get(0) + " = >" +
marray.get(1) + " = >" +
marray.get(2) + " = >" +
marray.get(3) );
}
private ArrayList<String> changeToArrayList(String [][] arr){
ArrayList<String> arraylist = new ArrayList<String>();
arraylist.add(arr[0][1]);
//or
//arraylist.add(arr[0][1] + " - " + arr[1][2]);
arraylist.add(array[1][2]);
arraylist.add(array[2][3]);
arraylist.add(array[3][4]);
return arraylist ;
}
}
و چیزی که در خروجی خواهید داشت و کاملاً هم صحیح است :
04-15 18:59:53.723: E/My list :(430): one = >two = >three = >four
اگر توجه کرده باشید من به صورت Comment نوشتم :
arraylist.add(arr[0][1] + " - " + arr[1][2]);
این بدین معنی هست که شما با چه منطقی می خواهید عناصر
آرایه اتون در List قرار بگیره !