voltan
جمعه 10 خرداد 1392, 11:31 صبح
سلام
توی کد اکتیویوتی زیر
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListfileActivity extends Activity {
public int MainId;
private ListView lv;
private ArrayList<String> listview_array = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if (extras != null) {
MainId = extras.getInt("cid");
}
// Read page from DB
DatabaseHandler db = new DatabaseHandler(this);
List<Item> items = db.getAllItemCid(MainId);
// Add to array
for (Item cn : items) {
listview_array.add("ID : " + cn.getId() + " Title : " + cn.getTitle());
}
// Make list view
lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listview_array));
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent item = new Intent(getApplicationContext(), ItemfileActivity.class);
item.putExtra("id", arg2);
startActivity(item);
}
});
}
}
من خیلی راحت یه آی دی رو تو اکتیویتی قبلی دستی ست شده اینجا میگیرم و بر اساس اون یه کوئری میزینم و اطلاعات مورد نیاز رو از دیتابیس میگیرم. بعد با این اطلاعات یه لیست درست میکنم و لیست رو هم نمایش میدم.
این لیست یه رویداد onItemClick هم داره که قراره با کلیک روی اون برم به صفحه آیتم این لیست ( فرض کنید لست یه سری خبر که با کلیک روی عنوان برم به متن خبر ) ، همه هم از دیتابیس خونده میشه.
با putExtra خیلی ساده میتونم آی دی رو بفرستم به اکتیویتی بعدی. فقط مشکل اینه که در قسمت زیر
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
arg2 در اصل میشه پوزیشن اون المان خاص در آرایه ای که ازش لیست رو ساختیم که به ترتیب از صفر مرتیب میشه.
در حالی که من میخوام پوزیشن هر المان آرایه رو آی دی اون المان ست کنم که بعدا از روی همون آی دی کوئری بزنم و متن خبر رو بگیرم.
المان ها رو هم اینجا ست میکنم توی آرایه
for (Item cn : items) {
listview_array.add("ID : " + cn.getId() + " Title : " + cn.getTitle());
}
با استفاده از listview_array.add . مشکل اینه که این متد .add اجازه نمیده پوزیشن رو هم اد کنم و فقط میتونم عنوان رو اد کنم.
چطوری میتونم پوزیشن رو تنظیم کنم برای آرایه؟
سعی کردم از این متد استفاده کنم ولی کد خروجی اجرا نشد ( با اعمال تغییرات لازم در کد )
listview_array[cn.getId()] = cn.getTitle();
اگه ممکنه راهنمایی کنید که کد بالا رو چطوری باید اصلاح کنم. آیا اصلا از روش صحیحی برای این کار استفاده کرد یا روش صحیح چیز دیگه ای
با تشکر
توی کد اکتیویوتی زیر
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListfileActivity extends Activity {
public int MainId;
private ListView lv;
private ArrayList<String> listview_array = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if (extras != null) {
MainId = extras.getInt("cid");
}
// Read page from DB
DatabaseHandler db = new DatabaseHandler(this);
List<Item> items = db.getAllItemCid(MainId);
// Add to array
for (Item cn : items) {
listview_array.add("ID : " + cn.getId() + " Title : " + cn.getTitle());
}
// Make list view
lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listview_array));
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent item = new Intent(getApplicationContext(), ItemfileActivity.class);
item.putExtra("id", arg2);
startActivity(item);
}
});
}
}
من خیلی راحت یه آی دی رو تو اکتیویتی قبلی دستی ست شده اینجا میگیرم و بر اساس اون یه کوئری میزینم و اطلاعات مورد نیاز رو از دیتابیس میگیرم. بعد با این اطلاعات یه لیست درست میکنم و لیست رو هم نمایش میدم.
این لیست یه رویداد onItemClick هم داره که قراره با کلیک روی اون برم به صفحه آیتم این لیست ( فرض کنید لست یه سری خبر که با کلیک روی عنوان برم به متن خبر ) ، همه هم از دیتابیس خونده میشه.
با putExtra خیلی ساده میتونم آی دی رو بفرستم به اکتیویتی بعدی. فقط مشکل اینه که در قسمت زیر
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
arg2 در اصل میشه پوزیشن اون المان خاص در آرایه ای که ازش لیست رو ساختیم که به ترتیب از صفر مرتیب میشه.
در حالی که من میخوام پوزیشن هر المان آرایه رو آی دی اون المان ست کنم که بعدا از روی همون آی دی کوئری بزنم و متن خبر رو بگیرم.
المان ها رو هم اینجا ست میکنم توی آرایه
for (Item cn : items) {
listview_array.add("ID : " + cn.getId() + " Title : " + cn.getTitle());
}
با استفاده از listview_array.add . مشکل اینه که این متد .add اجازه نمیده پوزیشن رو هم اد کنم و فقط میتونم عنوان رو اد کنم.
چطوری میتونم پوزیشن رو تنظیم کنم برای آرایه؟
سعی کردم از این متد استفاده کنم ولی کد خروجی اجرا نشد ( با اعمال تغییرات لازم در کد )
listview_array[cn.getId()] = cn.getTitle();
اگه ممکنه راهنمایی کنید که کد بالا رو چطوری باید اصلاح کنم. آیا اصلا از روش صحیحی برای این کار استفاده کرد یا روش صحیح چیز دیگه ای
با تشکر