1

私は使用をカスタムしListViewますArrayAdapter。の各項目に Like (私の言語では「ヘイ」) のボタンがありますListView。ボタンをクリックすると反対の嫌いに変わります。

そのボタンをクリックすると、関数 onClick コールバックが表示されますが、変更はすぐには表示されず、前のアクティビティに戻って表示に戻ります。

ボタン 'Hay' (好きなように) をクリックすると、'Hay' が 'Bỏ Hay' (嫌いなように) と青色に変わります。しかし、それはすぐです!私を助けてください!ありがとう!(すみません、私の英語は下手です)。

リンク画像 http://dl.dropbox.com/u/14415363/item.png

ここに私のコード:Java - CustonArrayAdapterです。

public class CustomArrayAdapter extends ArrayAdapter<LoiChucItem>{
Holder holder;
public CustomArrayAdapter(Context context, int textViewResourceId, List<LoiChucItem> objects)
{
    super(context, textViewResourceId, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    // holder pattern
    holder = null;
    if (convertView == null)
    {
        holder = new Holder();

        LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.loichuc_item_listview, null);
        holder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);
        holder.btnLike = (Button) convertView.findViewById(R.id.btnLike);
        holder.btnMessage = (Button) convertView.findViewById(R.id.btnMessage);
        holder.btnShare = (Button) convertView.findViewById(R.id.btnShare);
        convertView.setTag(holder);
    }
    else
    {
        holder = (Holder) convertView.getTag();
    }

    holder.tvContent.setText(getItem(position).getContent());
    holder.btnLike = (Button) convertView.findViewById(R.id.btnLike);
    // Không điền trực tiếp vì không nên để position final.
    final int id = getItem(position).getId();
    final int like = getItem(position).getLike();
    if(like == 1){
        holder.btnLike.setTextColor(Color.BLUE);
    } else {
        holder.btnLike.setTextColor(Color.DKGRAY);
    }

    holder.btnLike.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LoiChucOpenHelper.clickLike(id, like);
            if(like == 1){
                holder.btnLike.setTextColor(Color.DKGRAY);
            } else {
                holder.btnLike.setTextColor(Color.BLUE);
            }
            CustomArrayAdapter.this.notifyDataSetChanged();
        }

    });


    return convertView;
}

class Holder{
    TextView tvContent;
    Button btnLike;
    Button btnMessage;
    Button btnShare;
}

}

そして、ここに xml ファイルがあります: item_listview:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:background="#ffffff">

<TextView 

    android:id="@+id/tvContent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:text="Content"
    android:textSize="18sp"
    />
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 

    >
    <Button 
        android:id="@+id/btnLike"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/rating_good"
        android:gravity="left|center_vertical"
        android:text="Hay"
        android:textSize="10sp"
        />
    <Button 
        android:id="@+id/btnMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/social_send_now"
        android:gravity="left|center_vertical"
        android:text="Tin nhắn"
        android:textSize="10sp"
        />
    <Button 
        android:id="@+id/btnShare"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/social_share"
        android:gravity="left|center_vertical"
        android:text="Chia sẻ"
        android:textSize="10sp"
        />
</LinearLayout>

ここにリストビューがあります

<?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:orientation="vertical"
android:background="#a0a0a0" >

<ListView
    android:background="#a0a0a0"
    android:layout_margin="10dp"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:divider="@android:color/transparent"
    android:dividerHeight="10dp"
    android:scrollbars="none"

    >
</ListView>

4

2 に答える 2

0

非常に簡単に使用できるToggleButtonので、お使いの言語 (Hay) で [いいね] ボタンを押すと、[いいね] (ヘイ) ボタンの色が緑色に変わり、嫌いな「Bo Hay」がすぐに嫌いと表示されます。リンクにアクセス

ただ一つのことをする

 <ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="Bo Hay" android:textOff="Hay">
            </ToggleButton>

それは間違いなくあなたのために働くでしょう。

于 2012-12-19T04:47:55.383 に答える
0

ListView を無効にしてみてください。アクティビティ/フラグメントのコードを共有すると役立ちます。

于 2012-12-19T04:44:27.080 に答える