防止在ListView中再次选择

阿吉·毛拉纳(Agi Maulana)

Hay我曾试图选择ListView并将选定位置的视图颜色背景更改为透明的红色,但是每当我点击或选择一个项目时,其他项目的颜色背景也都会发生变化。如何仅选择和更改我选择的项目的颜色背景?

截屏。 很抱歉,我在这张照片中删除了应用名称和徽标

这是我的 ListView

<?xml version="1.0" encoding="utf-8"?>

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listFragmentSettingWaktu" />

这是我的代码

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by Asus on 6/4/2015.
 */
public class SettingWaktuFragment extends Fragment {

    private static final String TAG_PAGE = "tag_page";
    private static final String TAG_TITLE = "tag_title";
    private int page;
    private String title;
    private ArrayList<JamSibuk> jamList;

    private ListView list;
    private MyBaseAdapter jamAdapter;

    public SettingWaktuFragment newInstance(int page, String title){
        SettingWaktuFragment waktuFragment = new SettingWaktuFragment();
        Bundle b = new Bundle();
        b.putInt(TAG_PAGE, page);
        b.putString(TAG_TITLE, title);
        waktuFragment.setArguments(b);
        return waktuFragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        this.page = getArguments().getInt(TAG_PAGE);
        this.title = getArguments().getString(TAG_TITLE);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.fragment_setting_waktu_list_jam, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState){
        super.onActivityCreated(savedInstanceState);

        list = (ListView) getView().findViewById(R.id.listFragmentSettingWaktu);

        jamList = new ArrayList<JamSibuk>();
        String jam = null;
        for (int i=0; i<24; i++) {
            if (i < 10)
                jam = "0" + i + ":00";
            else
                jam = i + ":00";
            jamList.add(new JamSibuk(jam, false));
        }
        jamAdapter = new MyBaseAdapter();
        list.setAdapter(jamAdapter);
    }

    private class MyBaseAdapter extends BaseAdapter{

        class ViewHolder{
            TextView textView;
        }

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

        @Override
        public Object getItem(int position) {
            return jamList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            if(convertView == null)
                convertView = LayoutInflater.from(getActivity()).inflate(android.R.layout.simple_list_item_1, null);

            final ViewHolder holder = new ViewHolder();
            holder.textView = (TextView) convertView.findViewById(android.R.id.text1);
            holder.textView.setText(jamList.get(position).getJam());
            if(jamList.get(position).isSelected())
                convertView.setBackgroundColor(convertView.getContext().getResources().getColor(R.color.transparent_red));

            holder.textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   if(!jamList.get(position).isSelected())
                       jamList.get(position).setSelected(true);
                    else
                       jamList.get(position).setSelected(false);
                    jamAdapter.notifyDataSetChanged();
                }
            });

            return convertView;
        }
    }
}

提前致谢

沙吉

如果未选中该选项,则必须设置透明/默认颜色,否则将一个项目设为红色后将使项目变为红色。

if(jamList.get(position).isSelected()) {
    convertView.setBackgroundColor(convertView.getContext().getResources().getColor(R.color.transparent_red));
}
else{
    convertView.setBackgroundColor(convertView.getContext().getResources().getColor(android.R.color.transparent));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章