ورود

View Full Version : کار نکردن تپ کردن روی آیتم های لیست ویو



MMNNNM
شنبه 24 اسفند 1392, 13:51 عصر
سلام دوستان من یک لیست ویو دارم حالا می خوام کاری کنم که روی هر آیتم کلیک شد یه کاری کنه
ولی از آموزش های تونی نت و سوال هایی که قبلا کاربرا پرسیدند استفاده کردم ولی کار نمی کنه !!
جز این روش که نوشتم راه دیگه هست ؟؟؟




lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), "" + position, Toast.LENGTH_SHORT).show();
Log.i("LOG", "Click Shod ");
}

});

rubiks.kde
شنبه 24 اسفند 1392, 13:58 عصر
سطرهای شما شخصی سازی شده است؟(منظورم اینه از custom row دارید استفاده میکنید؟)

این روشی که استفاده کردید روش اصلی هست.

MMNNNM
شنبه 24 اسفند 1392, 14:06 عصر
منظورت رو نمیفهمم ولی این کد Adapter منه
تو این Adapterمن به آیتم های لیست ویو settextcolor و settextSizeو... هم میدم که الان از کد ها برداشتم
کارم خیلی گیره

public Myadapter(Context context, ArrayList<item> itemsArrayList) {

super(context, R.layout.item_tarfand, itemsArrayList);

this.context = context;
this.itemsArrayList = itemsArrayList;
}


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

// 1. Create inflater
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;

// 2. Get rowView from inflater
View rowView = inflater.inflate(R.layout.item_tarfand, parent, false);

// 3. Get the two text view from the rowView
Button BtnTarfandList = (Button) rowView.findViewById(R.id.btnListTarfand);

// 4. Set the text for textView

BtnTarfandList.setText(itemsArrayList.get(position ).getTitle());

// 5. retrn rowView
return rowView;

}

smemamian
شنبه 24 اسفند 1392, 14:06 عصر
منظور شما از "هر آیتم" چیه ؟
منظورتون اینه که وقتی روی هر سطر که کلیک کردید کار متفاوتی انجام بده ؟ به عبارت
ساده تر سطر اول با سطر دوم و... متفاوت عمل کنه ؟
یا اینکه
در سطرها Viewهای مختلفی وجود داره و می خواهید روی هر View که کلیک شد یک
کار متفاوت انجام بده ؟

MMNNNM
شنبه 24 اسفند 1392, 14:10 عصر
منظور شما از "هر آیتم" چیه ؟
منظورتون اینه که وقتی روی هر سطر که کلیک کردید کار متفاوتی انجام بده ؟ به عبارت
ساده تر سطر اول با سطر دوم و... متفاوت عمل کنه ؟
یا اینکه
در سطرها Viewهای مختلفی وجود داره و می خواهید روی هر View که کلیک شد یک
کار متفاوت انجام بده ؟

نه من یک لیست ویو دارم که توش مثلا 20 تا آیتم دارم می خوام با کلیک رو هر آیتم یه Toastنمایش بده مثلا .
اما کار نمی کنه !!!

rubiks.kde
شنبه 24 اسفند 1392, 14:12 عصر
منظورت رو نمیفهمم ولی این کد Adapter منه
تو این Adapterمن به آیتم های لیست ویو settextcolor و settextSizeو... هم میدم که الان از کد ها برداشتم
کارم خیلی گیره

public Myadapter(Context context, ArrayList<item> itemsArrayList) {

super(context, R.layout.item_tarfand, itemsArrayList);

this.context = context;
this.itemsArrayList = itemsArrayList;
}


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

// 1. Create inflater
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;

// 2. Get rowView from inflater
View rowView = inflater.inflate(R.layout.item_tarfand, parent, false);

// 3. Get the two text view from the rowView
Button BtnTarfandList = (Button) rowView.findViewById(R.id.btnListTarfand);

// 4. Set the text for textView

BtnTarfandList.setText(itemsArrayList.get(position ).getTitle());

// 5. retrn rowView
return rowView;

}





مشکل از همین button است.از طریق xml قابلیت فکوس رو برای button غیر فعال کنید.
android:focusable="false"

MMNNNM
شنبه 24 اسفند 1392, 14:20 عصر
مشکل از همین button است.از طریق xml قابلیت فکوس رو برای button غیر فعال کنید.
android:focusable="false"
درست نشد باز !!‌:(((

MMNNNM
شنبه 24 اسفند 1392, 17:09 عصر
کسی نمیدونه باید چی کار کنم ؟؟‌

خیلی کارم گیره :(

rubiks.kde
شنبه 24 اسفند 1392, 17:48 عصر
کسی نمیدونه باید چی کار کنم ؟؟‌

خیلی کارم گیره :(

این دو خصوصیت رو اضافه کردید؟

android:focusable="false"
android:focusableInTouchMode="false"

بغیر از اون button چیها دارید توی هر row

MMNNNM
شنبه 24 اسفند 1392, 18:04 عصر
آره اینا رو به xml آیتم هام اضافه مردم بازم نشد .
هم به Button و هم به LinearLayout که تو xml بود اضافه کردم بازم جواب نمیده !
اینم سورس XML آیتم های لیست ویو


<?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="match_parent"
android:baselineAligned="false"
android:orientation="vertical"

>

<Button

android:focusableInTouchMode="false"
android:focusable="false"
android:id="@+id/btnListTarfand"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_zoom"
android:drawableRight="@drawable/androidiconbeyzi"
android:text="Button" />

</LinearLayout>

smemamian
شنبه 24 اسفند 1392, 18:26 عصر
مثال زیر رو به صورت ساده نوشتم. هم سطر قابل کلیک شدن هست هم Buttonها :

http://upload7.ir/imgs/2014-03/73360405282085154822.jpg

دریافت :

http://www.uplooder.net/cgi-bin/dl.cgi?key=2d403e6095a3adc26d515d9e6e15062d

MMNNNM
شنبه 24 اسفند 1392, 18:41 عصر
مرسی دریافت کردم . ولی سعی من اینه که از روش خودم استفاده کنم . می خوام دلیلش رو پیدا کنم

smemamian
شنبه 24 اسفند 1392, 18:50 عصر
مشکلات شما :

* شما کلاس Holder تعریف نکردید.
* شما باید برای هر Viewای که می خواهید قابلیت کلیک شدن داشته باشه
تابع setTag مربوط به همون Positioon رو فراخوانی کنید. + ( android:focusable="false" )

viewholder.button.setTag(position);

MMNNNM
شنبه 24 اسفند 1392, 21:35 عصر
فایده نداره ! من یک کد می خوام که همین رو درست کنم کسی نمی تونه کمک کمه ؟؟‌

مرسی

rubiks.kde
شنبه 24 اسفند 1392, 21:53 عصر
فایده نداره ! من یک کد می خوام که همین رو درست کنم کسی نمی تونه کمک کمه ؟؟‌

مرسی

شاید مشکل از جایی دیگه باشه

MMNNNM
شنبه 24 اسفند 1392, 22:59 عصر
شاید مشکل از جایی دیگه باشه
آخه لیست ویو براحتی ست میشه من نمیدونم چرا رو آیتم ها تپ می کنم هیچی نمیشه !! :((((

این تایپیک رو ببینید فرم لیست ویو من اینجوریه اینجا (http://barnamenevis.org/showthread.php?438322-%D9%85%D8%B4%DA%A9%D9%84-%D8%AC%D8%B3%D8%AA-%D9%88-%D8%AC%D9%88-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87)

پست 4 یا 5 کد Adapter و item لیست ویو خودم رو گذاشتم اگه میشه کمک کنید