View Full Version : ظاهر ListView
  
amirarcs
سه شنبه 15 بهمن 1392, 20: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, 20:52 عصر
لطفاً کلاس activty تون هم درج کنید.
amirarcs
سه شنبه 15 بهمن 1392, 21: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, 21:05 عصر
در ListActivity متد setContentView وجود ندارد .
amirarcs
سه شنبه 15 بهمن 1392, 21:06 عصر
ببخشید اما وجو داره که
harani
سه شنبه 15 بهمن 1392, 21:11 عصر
شاید شما درست میفرمایید بذارید ببینم پس مشکل کجاست
amirarcs
سه شنبه 15 بهمن 1392, 21:17 عصر
خوب با این کار قسمت 
private void tazesazi() {
		ArrayAdapter<Verse> adapter;
		adapter = new VerseAdapter(this, verses4);
		setListAdapter(adapter);
	}
خطا میده و تا زمانی که ListActivity نباشه خطا از بین نمیره
harani
سه شنبه 15 بهمن 1392, 21:20 عصر
تو getview کلاس های adapter به جای null ها parent , false را  درج کنید
amirarcs
سه شنبه 15 بهمن 1392, 21:47 عصر
مشکل برطرف شد.
ایراد از متد tazesazi بود من در هر دوتا activity از new VereAdapter استفاده می کردم که باید در یکیش از new VerseAdapterGhazaliat استفاده میکردم
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.