ورود

View Full Version : تشخیص کلیک روی علامت edit یا delete در listView در انتهای هر آیتم



kamran_14
یک شنبه 09 دی 1397, 10:38 صبح
سلام
خسته نباشید
من میخوام اطلاعات یک جدول رو از پایگاه بخونم و در listView نمایش دهم
در انتهای هر آیتم علامت edit و delete وجود دارد
به طور خلاصه من میخوام
کلیک روی علامت edit یا delete در listView در انتهای هر آیتم را تشخیص دهم و عمل مربوطه را انجام بدم
هر رکورد شامل نام، نام خانوادگی، تلفن است
من listView رو با setAdapter پر میکنم

SQLiteDatabase db; db=openOrCreateDatabase("student2DB", Context.MODE_PRIVATE,null);
ListView lv=(ListView)findViewById(R.id.listView);


Cursor cc=db.rawQuery("SELECT * FROM student",null);
if (cc.getCount()==0)
Toast.makeText(this,"Error",Toast.LENGTH_SHORT).show();
else{
String[] s=new String[cc.getCount()];
String[] b=new String[cc.getCount()];
int index=0;
while (cc.moveToNext())
{
s[index]=cc.getInt(0)+"|"+cc.getString(1)+" "+cc.getString(2)+" "+cc.getString(3);
index++;
}


ArrayAdapter<String> aa=new ArrayAdapter<String>(this,R.layout.item_layout,R.id.fnlntelTextView,s) ;
lv.setAdapter(aa);
}
db.close();

و وقتی روی آیتمی کلیک میکنم:

ListView lv=(ListView)findViewById(R.id.listView); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv=(TextView)view.findViewById(R.id.fnlntelTextVie w);
String s=tv.getText().toString();
Toast.makeText(MyActivity.this,s,Toast.LENGTH_SHOR T).show();
}
});
نمی دونم چیکار کنم خیلی فکر کردم نتونستم
لطفا کمکم کنید
ممنون

farhad_shiri_ex
یک شنبه 09 دی 1397, 10:52 صبح
سلام
خسته نباشید
من میخوام اطلاعات یک جدول رو از پایگاه بخونم و در listView نمایش دهم
در انتهای هر آیتم علامت edit و delete وجود دارد
به طور خلاصه من میخوام
کلیک روی علامت edit یا delete در listView در انتهای هر آیتم را تشخیص دهم و عمل مربوطه را انجام بدم
هر رکورد شامل نام، نام خانوادگی، تلفن است
من listView رو با setAdapter پر میکنم

SQLiteDatabase db; db=openOrCreateDatabase("student2DB", Context.MODE_PRIVATE,null);
ListView lv=(ListView)findViewById(R.id.listView);


Cursor cc=db.rawQuery("SELECT * FROM student",null);
if (cc.getCount()==0)
Toast.makeText(this,"Error",Toast.LENGTH_SHORT).show();
else{
String[] s=new String[cc.getCount()];
String[] b=new String[cc.getCount()];
int index=0;
while (cc.moveToNext())
{
s[index]=cc.getInt(0)+"|"+cc.getString(1)+" "+cc.getString(2)+" "+cc.getString(3);
index++;
}


ArrayAdapter<String> aa=new ArrayAdapter<String>(this,R.layout.item_layout,R.id.fnlntelTextView,s) ;
lv.setAdapter(aa);
}
db.close();

و وقتی روی آیتمی کلیک میکنم:

ListView lv=(ListView)findViewById(R.id.listView); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv=(TextView)view.findViewById(R.id.fnlntelTextVie w);
String s=tv.getText().toString();
Toast.makeText(MyActivity.this,s,Toast.LENGTH_SHOR T).show();
}
});
نمی دونم چیکار کنم خیلی فکر کردم نتونستم
لطفا کمکم کنید
ممنون

دوست عزیز !
برای این کار کافی که یک کلاس اختصاصی که از کلاس ArrayAdapter ارث کرده باشه ایجاد کنید و خیلی راحت تو این کلاس می تونید به تمام متریالهایی که در لیست ویو نمایش میدید دسترسی داشته باشید و به راحتی به رویداد OnClickListner متریال پاسخ مناسب بدید.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ListView
android:id="@+id/simpleListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#000"
android:dividerHeight="2dp"/>

</RelativeLayout>


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<ImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="5dp"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="@dimen/activity_horizontal_margin"
android:text="Demo"
android:textColor="#000" />
</LinearLayout>


package example.abhiandriod.customarrayadapterexample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

ListView simpleList;
ArrayList<Item> animalList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simpleList = (ListView) findViewById(R.id.simpleListView);
animalList.add(new Item("Lion",R.drawable.lion));
animalList.add(new Item("Tiger",R.drawable.tiger));
animalList.add(new Item("Monkey",R.drawable.monkey));
animalList.add(new Item("Elephant",R.drawable.elephant));
animalList.add(new Item("Dog",R.drawable.dog));
animalList.add(new Item("Cat",R.drawable.cat));

MyAdapter myAdapter=new MyAdapter(this,R.layout.list_view_items,animalList );
simpleList.setAdapter(myAdapter);
}
}


package example.abhiandriod.customarrayadapterexample;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class MyAdapter extends ArrayAdapter<Item> {

ArrayList<Item> animalList = new ArrayList<>();

public MyAdapter(Context context, int textViewResourceId, ArrayList<Item> objects) {
super(context, textViewResourceId, objects);
animalList = objects;
}

@Override
public int getCount() {
return super.getCount();
}

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

View v = convertView;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLA TER_SERVICE);
v = inflater.inflate(R.layout.list_view_items, null);
TextView textView = (TextView) v.findViewById(R.id.textView);
ImageView imageView = (ImageView) v.findViewById(R.id.imageView);
textView.setText(animalList.get(position).getAnima lName());
imageView.setImageResource(animalList.get(position ).getAnimalImage());
imageView.setOnClickListner((View v) -> {
//type your code this here!
});
return v;

}

}


package example.abhiandriod.customarrayadapterexample;


public class Item {

String animalName;
int animalImage;

public Item(String animalName,int animalImage)
{
this.animalImage=animalImage;
this.animalName=animalName;
}
public String getAnimalName()
{
return animalName;
}
public int getAnimalImage()
{
return animalImage;
}
}

kamran_14
یک شنبه 09 دی 1397, 12:09 عصر
از کمک مفیدتون خیلی ممنونم