ورود

View Full Version : آیکن چشم یا عبارت "خوانده شده" و "خوانده نشده" کنار آیتم های لیست



hey you
سه شنبه 27 آبان 1393, 14:10 عصر
سلام دوستان
چطور می تونم کنار آیتم های لیستم گزینه ای شبیه به چشم یا نوشته ای به عنوان "خوانده نشده" داشته باشم که وقتی کاربر وارد آیتم لیست می شه و خارج می شه، اون چشم روشن شده باشه یا عبارت "خوانده نشده" تبدیل به "خوانده شده" بشه

با تشکر

اینم کد آیتم های لیست: (توضیات هم دادم بعضی جاها)


package ...

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener ;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;


public class SubTitleActivity extends Activity implements OnItemClickListener, OnItemLongClickListener {

ArrayAdapter<String> adapter;
String[] items;
ListView listy;
SelectingFav db;
int nom;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);

nom = getIntent().getExtras().getInt("nom");

db = new SelectingFav(this); // farakhanie database alaghemandiha

listy = (ListView) findViewById(R.id.listView1);
setListItems();
listy.setOnItemClickListener(this);
listy.setOnItemLongClickListener(this);
}

private void setListItems() {
items = readItems();
adapter = new OmidAdapter(SubTitleActivity.this, R.layout.list_item, R.id.textView1, items);
listy.setAdapter(adapter);
listy.invalidateViews(); // bazavari list
}





private String[] readItems() { // khandan titrha
InputStream inputStream = null;
StringBuilder sb = null;
String[] itemsa = null;
try {
inputStream = getResources().getAssets().open("cnt" + nom + "/titles.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream),8000);
sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
line = line.trim().replace("\ufeff", "").replaceAll("[^\\p{Graph}\n\r\t ]", "");
sb.append(line+"\n");
}
itemsa=sb.toString().split("\n");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return itemsa;
}

private class OmidAdapter extends ArrayAdapter<String>{

private String[] aitems;


public OmidAdapter(Context context, int resource, int textViewResourceId, String[] aitems) {
super(context, resource, textViewResourceId, aitems);
this.aitems = aitems;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.list_item, parent, false);
TextView title = (TextView) row.findViewById(R.id.textView1);
TextView subtitle = (TextView) row.findViewById(R.id.textView2);
title.setText(aitems[position]);


// tanzimat font
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getA pplicationContext());
String font_size = pref.getString("font_size", "18");
String font_name = pref.getString("font_name", "font1");
String font_color = pref.getString("font_color", "Black");
title.setTextSize(Integer.valueOf(font_size));
title.setTypeface(Typeface.createFromAsset(getAsse ts(), font_name + ".ttf"));
title.setTextColor(Color.parseColor(font_color));

subtitle.setTypeface(Typeface.createFromAsset(getA ssets(), font_name + ".ttf"));

db.open(); // baz kardan db
if(db.isSelect(nom + "INDX" + aitems[position].trim().replace("\ufeff", "") + "INDX" + position)){ // barresiye inke mored dar favorites hast ya na
subtitle.setText("ثبت شده در لیست علاقمندی ها");
}else{
subtitle.setText("");
}
db.close(); // bastan db

return row;
}
}


@Override
public void onItemClick(AdapterView<?> ad, View v, int position, long id) {
Intent intent = new Intent(SubTitleActivity.this, Content.class);
intent.putExtra("nom", nom);
intent.putExtra("file", "" + (position + 1));
intent.putExtra("title", ad.getItemAtPosition(position).toString());
startActivity(intent);
}


@Override
public boolean onItemLongClick(AdapterView<?> ad, View arg1, int position, long arg3) {
// bargozidan mored
// ezafe kardan titre mored be db
db.open(); // baz kardan db
boolean isin = db.isSelect(nom + "INDX" + ad.getItemAtPosition(position).toString() + "INDX" + position);
db.close(); // bastan db
if(isin){ // barresiye inke mored dar favorites hast ya na
db.open();
db.deleteEntry(nom + "INDX" + ad.getItemAtPosition(position).toString() + "INDX" + position); // hazf az db
db.close();
}else{ // agar nabood
db.open();
db.createEntry(ad.getItemAtPosition(position).toSt ring().trim().replace("\ufeff", ""), nom + "INDX" +
ad.getItemAtPosition(position).toString() + "INDX" + position); // sabt dar db
db.close();
}
setListItems(); //bazavariye list
return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(SubTitleActivity.this, Setting.class));
break;
case R.id.action_about:
startActivity(new Intent(SubTitleActivity.this, About.class));
break;
}
return true;
}





}

tux-world
سه شنبه 27 آبان 1393, 23:32 عصر
اول اینکه شما باید از یه کلاسی به صورت استراکچر استفاده کنید که یکی از آیتمهای اون بولین باشه. وقتی که این داده ها رو به صورت آرایه ای از این کلاس ساختید و به لیست ویو اضافه کردید. بگید اگه روش کلیک شد مقدار بولین اون رو true بکنه وقتی هم که برمیگرده تو قسمت onResume اکتیویتی اصلی بیایید آپدیت کنید یا به عبارتی رفرش کنید لیست رو. البته این مورد رو آخر دارم میگم که اول باید متوجه موضوع میشدید بعد. و اون اینکه وقتی که دارید لیست ویو رو از محتوا پر میکنید بگید که آیا true هستش بنویسه خانده نشده اگه false هستش بگه خوانده شده مثلا و باقی ماجرا که اول گفتم

hey you
چهارشنبه 28 آبان 1393, 00:11 صبح
ممنونم ازت دوست عزیز
متوجه شدم
بخاطر مدت زمان طولانی بازنویسی لیست، onResume رو حذف کرده بودم چون آیتم ها نزدیک به 600 تا آیتم هست.
با تشکر