Benim Custom list view
benim paylaşılan tercihi var. Düğme üzerinde rakamları tutmak için kullanıyorum ama düğme 0 olduğunda satırın kaybolduğu bir durum var, ancak aşağı kaydırdığımda eski formuna döner ve kullanıcı için tekrar görünür hale gelir. SharedPreference
'da aynı mantığı, son durumu korumak gibi uygulamak mümkün mü? onun daha okunabilir, böylecePaylaşılan Tercihler özel ListView'e uygulanabilir mi?
import static android.view.View.INVISIBLE;
public class MainActivity extends Activity {
public MyAdapter adapter;
Context context;
public ListView list;
public int t[];
public SharedPreferences prefs;
public SharedPreferences.Editor edit;
int [] btnNums={100,150,94,72,206,489,1481,731,131,91,145,137,662,770,196,351,258,131,180,1281};
int[] images = {R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5, R.drawable.a6, R.drawable.a7, R.drawable.a8, R.drawable.a9,
R.drawable.a10, R.drawable.a11, R.drawable.a12, R.drawable.a13, R.drawable.a14, R.drawable.a15, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19, R.drawable.a20, R.drawable.a21};
String[] exp;
String[] mean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit= this.getSharedPreferences("NAME", Context.MODE_APPEND).edit();
prefs = getSharedPreferences("NAME", Context.MODE_APPEND);
Resources res=getResources();
exp= res.getStringArray(R.array.names);
mean=res.getStringArray(R.array.anlam);
list= (ListView) findViewById(R.id.listView);
//
// edit.putInt("Count", btnNums.length);
// int count = 0;
// for (int i: btnNums){
// edit.putInt("IntValue_" + count++, i);
// }
// edit.commit();
//
int[] ret;
int count1 = prefs.getInt("Count", 0);
ret = new int[count1];
for (int i = 0; i < count1; i++){
ret[i] =prefs.getInt("IntValue_"+ i, i);
}
t=ret;
if(t!=null)
{
adapter=new MyAdapter(this,exp,images,mean,t);
}else
{
adapter=new MyAdapter(this,exp,images,mean,btnNums);
}
list.setAdapter(adapter);
context=getApplicationContext();
}
}
class MyAdapter extends ArrayAdapter<String>{
int [] images;
String [] titleArray;
String [] descriptionArray;
int [] btnNums;
MainActivity ma;
public MyAdapter(MainActivity m, String[] titles, int imgs[], String[] descp, int[] btnNum){
super(m, R.layout.single_row, R.id.textView,titles);
this.images=imgs;
this.titleArray=titles;
this.descriptionArray=descp;
btnNums=btnNum;
this.ma=m;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater= (LayoutInflater) ma.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View row=inflater.inflate(R.layout.single_row, parent, false);
final TextView myTitle=(TextView)row.findViewById(R.id.textView);
myTitle.findViewById(R.id.textView);
final TextView descp=(TextView)row.findViewById(R.id.textView2);
final ImageView imageView = (ImageView) row.findViewById(R.id.imageView);
final Button button = (Button) row.findViewById(R.id.angry_btn);
final Vibrator a = (Vibrator) ma.getSystemService(Context.VIBRATOR_SERVICE);
if(ma.t!=null)
{
for(int i=0; i<21;i++){
button.setText("" + ma.t[position]);
imageView.setImageResource(images[position]);
myTitle.setText(titleArray[position]);
descp.setText(descriptionArray[position]);
}
}else
{
for(int i=0; i<21;i++){
button.setText("" + btnNums[position]);
imageView.setImageResource(images[position]);
myTitle.setText(titleArray[position]);
descp.setText(descriptionArray[position]);
}
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btnNums[position]--;
storeIntArray(btnNums);
a.vibrate(30);
if (btnNums[position] == 0) {
button.setEnabled(false);
button.setVisibility(INVISIBLE);
row.setVisibility(INVISIBLE);
}
int temp[]=getFromPrefs();
ma.t=temp;
for (int i = 0; i < 21; i++) {
button.setText("" + temp[position]);
imageView.setImageResource(images[position]);
myTitle.setText(titleArray[position]);
descp.setText(descriptionArray[position]);
}
}
});
return row;
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
public void storeIntArray(int[] array){
ma.edit.putInt("Count", array.length);
int count = 0;
for (int i: array){
ma.edit.putInt("IntValue_" + count++, i);
}
ma.edit.commit();
}
public int[] getFromPrefs(){
int[] ret;
int count = ma.prefs.getInt("Count", 0);
ret = new int[count];
for (int i = 0; i < count; i++){
ret[i] =ma.prefs.getInt("IntValue_"+ i, i);
}
return ret;
}
}