Soru & Cevap

Listview buton tıklama sorunu - android

12.09.2015 - 02:39

Android uygulamasında listviewde soru seçenekleri için 5 buton mevcut, sorular yüklendikten sonra herhangi bir soruya basında bir alttaki soru işaretleniyor.

Sorunu ve çözümü bulamadım click eventini oluşturduğumuz için new ile bu sorunmu meydana geliyor yoksa position damı sıkıntı var anlamadım, positionlarıda ekrana yazdırdığımda sorun yok click içinde farklı, click dışında seçilenin dışında(bir alttaki) butonun getText() i ekrana çıktığını fark ettim.

Görsel kaldırıldı.

 

public class SorularCustomBaseAdapter extends BaseAdapter {
	Context context;
	List<SorularEleman> rowItems;
	MySqlConnect connect;

	public SorularCustomBaseAdapter(Context context, List<SorularEleman> items) {
		this.context = context;
		this.rowItems = items;
		connect = new MySqlConnect(context);
	}

	int durum = 1;
	SorularEleman rowItem;
	int i = 1;
	Button secenekA, secenekB, secenekC, secenekD, secenekE;
	TextView baslik, soru;

	public View getView(final int position, View convertView, ViewGroup parent) {

		LayoutInflater mInflater = (LayoutInflater) context
				.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
		convertView = mInflater.inflate(R.layout.panel_liste_sorular, null,
				true);

		rowItem = (SorularEleman) getItem(position);

		baslik = (TextView) convertView.findViewById(R.id.soruBaslik);
		soru = (TextView) convertView.findViewById(R.id.sorularSoru);
		secenekA = (Button) convertView.findViewById(R.id.secenekA);
		secenekB = (Button) convertView.findViewById(R.id.secenekB);
		secenekC = (Button) convertView.findViewById(R.id.secenekC);
		secenekD = (Button) convertView.findViewById(R.id.secenekD);
		secenekE = (Button) convertView.findViewById(R.id.secenekE);

		baslik.setText("Soru " + String.valueOf(position));
		soru.setText(Html.fromHtml(rowItem.getSoru()));
		secenekA.setText("A-) " + rowItem.getSecenekA());
		secenekB.setText("B-) " + rowItem.getSecenekB());
		secenekC.setText("C-) " + rowItem.getSecenekC());
		secenekD.setText("D-) " + rowItem.getSecenekD());
		secenekE.setText("E-) " + rowItem.getSecenekE());
		secenekA.setOnClickListener(new AdapterView.OnClickListener() {

			public void onClick(View v) {
				Toast.makeText(
						context.getApplicationContext(),
						secenekA.getText().toString() + ":"
								+ String.valueOf(position),
						Toast.LENGTH_LONG).show();
				

				//Dogrula(1, secenekA);

			}
		});

		secenekB.setOnClickListener(new AdapterView.OnClickListener() {

			public void onClick(View v) {

				Dogrula(2, secenekB);

			}
		});

		secenekC.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Dogrula(3, secenekC);
			}
		});

		secenekD.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Dogrula(4, secenekD);
			}
		});

		secenekE.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Dogrula(5, secenekE);
			}
		});
		
		return convertView;
	}

	void Dogrula(int secenek, Button btn) {
		DogruCevap(secenek, btn, secenekA, secenekB, secenekC, secenekD,
				secenekE, rowItem.getCevap());
	}

	String dogruCevapRenk = "#99CC00";

	void DogruCevap(int secenek, Button btn, Button scnkA, Button scnkB,
			Button scnkC, Button scnkD, Button scnkE, int cevap) {

		if (secenek == cevap) {
			btn.setBackgroundColor(Color.parseColor(dogruCevapRenk));
		} else {
			DogruCevapBul(cevap, scnkA, scnkB, scnkC, scnkD, scnkE);
		}
	}

	void DogruCevapBul(int cevap, Button scnkA, Button scnkB, Button scnkC,
			Button scnkD, Button scnkE) {
		switch (cevap) {
		case 1:
			scnkA.setBackgroundColor(Color.parseColor(dogruCevapRenk));
			YanlisButon(scnkB, scnkC, scnkD, scnkE);
			break;
		case 2:
			scnkB.setBackgroundColor(Color.parseColor(dogruCevapRenk));
			YanlisButon(scnkA, scnkC, scnkD, scnkE);
			break;
		case 3:
			scnkC.setBackgroundColor(Color.parseColor(dogruCevapRenk));
			YanlisButon(scnkB, scnkA, scnkD, scnkE);
			break;
		case 4:
			scnkD.setBackgroundColor(Color.parseColor(dogruCevapRenk));
			YanlisButon(scnkB, scnkC, scnkA, scnkE);
			break;
		case 5:
			scnkE.setBackgroundColor(Color.parseColor(dogruCevapRenk));
			YanlisButon(scnkB, scnkC, scnkD, scnkA);
			break;
		}
	}

	String yanlisCevapRenk = "#DF594F";

	void YanlisButon(Button btn1, Button btn2, Button btn3, Button btn4) {
		btn1.setBackgroundColor(Color.parseColor(yanlisCevapRenk));
		btn2.setBackgroundColor(Color.parseColor(yanlisCevapRenk));
		btn3.setBackgroundColor(Color.parseColor(yanlisCevapRenk));
		btn4.setBackgroundColor(Color.parseColor(yanlisCevapRenk));
	}

	public int getCount() {
		return rowItems.size();
	}

	public Object getItem(int position) {
		return rowItems.get(position);
	}

	public long getItemId(int position) {
		return rowItems.indexOf(getItem(position));
	}
}

 

7 Görüntülenme

0 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.