kamran_14
یک شنبه 09 دی 1397, 11: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, 11: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, 13:09 عصر
از کمک مفیدتون خیلی ممنونم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.