View Full Version : ظاهر ListView
amirarcs
سه شنبه 15 بهمن 1392, 19:49 عصر
ببخشید دوستان من یک سوال داشتم.
من یک برنامه دارم که دوتا ListView داره و هر کدوم از اینها هم یک Adapter دارن جهت قرار گیری اشیاع و همچنین قالب ListView اما مشکل اینجا هست که برنامه پس از اجرا فقط یکی از از قالب ها رو اجرا میکنه و با این که ظاهر ListView ها جدا طراحی شده اما هر دو به یک شکل نمایش داده میشن .
ممنون میشم کمکم کنید
آداپتور اول:
public class VerseAdapter extends ArrayAdapter<Verse> {
List<Verse> verses1;
Context c;
DBAdapter db;
public VerseAdapter(Context c, List<Verse> verses1) {
super(c, android.R.id.content, verses1);
this.c = c;
this.verses1 = verses1;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater vi = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
View view = vi.inflate(R.layout.listview_ghazaliat_titel, null);
final Verse verse1 = verses1.get(position);
TextView txtlistview = (TextView) view.findViewById(R.id.txtlistview);
txtlistview.setText(verse1.getname());
return view;
}
آداپتور دوم:
public class VerseAdapterGhazaliat extends ArrayAdapter<Verse> {
List<Verse> verses2;
Context c;
DBAdapter db;
public VerseAdapterGhazaliat(Context c, List<Verse> verses2) {
super(c, android.R.id.content, verses2);
this.c = c;
this.verses2 = verses2;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater vi = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
View view2 = vi.inflate(R.layout.listviewmain, null);
final Verse verse1 = verses2.get(position);
TextView txtlistview = (TextView) view2.findViewById(R.id.txtlistview);
txtlistview.setText(verse1.getname());
return view2;
}
harani
سه شنبه 15 بهمن 1392, 19:52 عصر
لطفاً کلاس activty تون هم درج کنید.
amirarcs
سه شنبه 15 بهمن 1392, 20:02 عصر
چشم.
این اکتیویتی مربوط به آداپتر اول
public class AnvariGhasaedTitel extends ListActivity{
List<Verse> verses1;
DBAdapter db;
String tabalename1 = DBAdapter.DATABASE_MAINTABLE3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.anvari_ghazaliat_titel);
try {
String destPath = "/data/data/" + getPackageName() +
"/databases";
File f = new File(destPath);
if (!f.exists()) {
f.mkdirs();
f.createNewFile();
//---copy the db from the assets folder into
// the databases folder---
CopyDB(getBaseContext().getAssets().open("anvari_poem"),
new FileOutputStream(destPath + "/anvari_poem"));
Log.i("masha", "masha");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//fakhaniye classe DBAdapter va baz kardane database:AllContacts(DBAdapter.DATABASE_MAINTABLE1 );
db = new DBAdapter(this);
db.open();
verses1 = db.getAllContacts(DBAdapter.DATABASE_MAINTABLE3);
tazesazi();
}
@Override
protected void onPause() {
super.onPause();
//bastan e database hengame khoruj az safhe faramush nashe !
db.close();
Log.i(DBAdapter.TAG, "database baste shod!");
}
@Override
protected void onResume() {
super.onResume();
db.open();
Log.i(DBAdapter.TAG, "database baz shod!");
verses1 = db.getAllContacts(tabalename1);
tazesazi();
}
private void tazesazi() {
ArrayAdapter<Verse> adapter;
adapter = new VerseAdapter(this, verses1);
setListAdapter(adapter);
}
public void CopyDB(InputStream inputStream,
OutputStream outputStream) throws IOException {
//---copy 1K bytes at a time---
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Verse verse = verses1.get(position);
Intent next = new Intent(AnvariGhasaedTitel.this, AnvariGhazaliatVerse.class);
next.putExtra(".matbakh.Food", verse);
startActivity(next);
}
اینم activity مربوط به آداپتر دوم
public class AnvariGhazaliatTitel extends ListActivity {
List<Verse> verses1;
DBAdapter db;
String tabalename1 = DBAdapter.DATABASE_MAINTABLE1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.anvari_ghazaliat_titel);
try {
String destPath = "/data/data/" + getPackageName() +
"/databases";
File f = new File(destPath);
if (!f.exists()) {
f.mkdirs();
f.createNewFile();
//---copy the db from the assets folder into
// the databases folder---
CopyDB(getBaseContext().getAssets().open("anvari_poem"),
new FileOutputStream(destPath + "/anvari_poem"));
Log.i("masha", "masha");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//fakhaniye classe DBAdapter va baz kardane database:AllContacts(DBAdapter.DATABASE_MAINTABLE1 );
db = new DBAdapter(this);
db.open();
verses1 = db.getAllContacts(DBAdapter.DATABASE_MAINTABLE1);
tazesazi();
}
@Override
protected void onPause() {
super.onPause();
//bastan e database hengame khoruj az safhe faramush nashe !
db.close();
Log.i(DBAdapter.TAG, "database baste shod!");
}
@Override
protected void onResume() {
super.onResume();
db.open();
Log.i(DBAdapter.TAG, "database baz shod!");
verses1 = db.getAllContacts(tabalename1);
tazesazi();
}
private void tazesazi() {
ArrayAdapter<Verse> adapter;
adapter = new VerseAdapter(this, verses1);
setListAdapter(adapter);
}
public void CopyDB(InputStream inputStream,
OutputStream outputStream) throws IOException {
//---copy 1K bytes at a time---
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Verse verse = verses1.get(position);
Intent next = new Intent(AnvariGhazaliatTitel.this, AnvariGhazaliatVerse.class);
next.putExtra(".matbakh.Food", verse);
startActivity(next);
}
harani
سه شنبه 15 بهمن 1392, 20:05 عصر
در ListActivity متد setContentView وجود ندارد .
amirarcs
سه شنبه 15 بهمن 1392, 20:06 عصر
ببخشید اما وجو داره که
harani
سه شنبه 15 بهمن 1392, 20:11 عصر
شاید شما درست میفرمایید بذارید ببینم پس مشکل کجاست
amirarcs
سه شنبه 15 بهمن 1392, 20:17 عصر
خوب با این کار قسمت
private void tazesazi() {
ArrayAdapter<Verse> adapter;
adapter = new VerseAdapter(this, verses4);
setListAdapter(adapter);
}
خطا میده و تا زمانی که ListActivity نباشه خطا از بین نمیره
harani
سه شنبه 15 بهمن 1392, 20:20 عصر
تو getview کلاس های adapter به جای null ها parent , false را درج کنید
amirarcs
سه شنبه 15 بهمن 1392, 20:47 عصر
مشکل برطرف شد.
ایراد از متد tazesazi بود من در هر دوتا activity از new VereAdapter استفاده می کردم که باید در یکیش از new VerseAdapterGhazaliat استفاده میکردم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.