java - 如何更改ListView项的文本背景

标签 java android android-listview

我正在使用 ArrayAdapter 实现 ListView。每当单击任何 ListView 项目时,我都希望更改该项目的文本颜色并将其保存在 SharedPreference 中。我是初学者,不知道如何实现。

请帮助我实现这个目标。我尝试了很多资源,但问题都无法解决。

这是我的代码。

public class ALLVERSE extends AppCompatActivity  implements NavigationView.OnNavigationItemSelectedListener {
    private ListView mylistview;
    private ArrayList<String>versenumber;
    private ArrayList<String>verselist;
    private ArrayList<String>id;
    private  ArrayList<String>refernce;
    private DatabaseHelper mDBHelper;
    private SQLiteDatabase mDb;
    private int booknumber;
    private  int chapternumber;
    private  String bookname;
    private TextView booknametitle;
    private  FullverseAdopter fullverseAdopter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_allverse);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        booknametitle=findViewById(R.id.bookname);

        Intent mIntent = getIntent();
        booknumber = mIntent.getIntExtra("Boooknumber",0);
        chapternumber= mIntent.getIntExtra("Chapternumber", 0);
        bookname=mIntent.getStringExtra("Bookname");

        booknametitle.setText(bookname.toString() +"   "+  chapternumber);


        //Toast.makeText(this, ""+bookname, Toast.LENGTH_SHORT).show();
        setSupportActionBar(toolbar);
        toolbar.setTitle("ALL VERSE");


        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        setData();

        mylistview=findViewById(R.id.mylistview);

        fullverseAdopter=new FullverseAdopter(ALLVERSE.this,R.layout.versedisplayrow,versenumber,verselist,refernce,id);

        mylistview.setAdapter(fullverseAdopter);

        mylistview.setOnItemClickListener(new AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Toast.makeText(ALLVERSE.this, "i am cliked", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.getItemId() == android.R.id.home) {
            onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }

    private void setData() {
        versenumber=new ArrayList<>();
        verselist=new ArrayList<>();
        refernce=new ArrayList<>();
        id=new ArrayList<>();

        mDBHelper = new DatabaseHelper(this);
        mDb = mDBHelper.getReadableDatabase();
        Cursor cursor = mDb.rawQuery("SELECT id, v, t from t_kjv where b="+booknumber+" AND c="+chapternumber+";", new String[]{});
        if(cursor!=null && cursor.getCount() > 0)
        { if (cursor.moveToFirst())
        {
            do {
                id.add(cursor.getString(0));
                versenumber.add(cursor.getString(1));
                verselist.add(cursor.getString(2));
                refernce.add(bookname+" "+chapternumber);
            }
            while (cursor.moveToNext());
        }
        }
    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        Fragment fragment;
        int id = item.getItemId();
        if (id == R.id.home) {
            Intent intent=new Intent(this,MainActivity.class);
            startActivity(intent);

        } else if (id == R.id.favoruite)
        { Intent intent=new Intent(this,Favourite.class);
            startActivity(intent);
        }  else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

我的适配器类

public class FullverseAdopter extends ArrayAdapter<String> {
    private ALLVERSE activity;
    private List<String> versenumber;
    private List<String>verseid;
    private List<String> verselist;
    private List<String> refernce;
    TextToSpeech textToSpeech;
    private DatabaseHelper mDBHelper;
    private SQLiteDatabase mDb;
    private  boolean ischeckd;
    String My_PREF="MY_PREF";

    public  String ex="switch";

    //check for availabe language
    int result;

    public FullverseAdopter(ALLVERSE context, int resource, List<String> versenumber, List<String> verselist, List<String> refernce, List<String>verseid) {
        super(context, resource, versenumber);
        this.activity = context;
        this.versenumber = versenumber;
        this.verselist = verselist;
        this.refernce = refernce;
        this.verseid=verseid;
    }

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

    @Override
    public String getItem(int position) {
        return versenumber.get(position);
    }

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

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        final ViewHolder holder;

        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        // If holder not exist then locate all view from UI file.
        if (convertView == null) {
            // inflate UI from XML file
            convertView = inflater.inflate(R.layout.versedisplayrow, parent, false);
            // get all UI view
            holder = new ViewHolder(convertView);
            // set tag for holder
            holder.versenumber = (TextView) convertView.findViewById(R.id.versenumber);
            holder.verselist = (TextView) convertView.findViewById(R.id.verse);
            holder.addfavoruite=(ToggleButton)convertView.findViewById(R.id.adbookmark);

            convertView.setTag(holder);
        } else {
            // if holder created, get tag from view
            holder = (ViewHolder) convertView.getTag();
        }
        holder.versenumber.setText(versenumber.get(position));
        holder.verselist.setText(verselist.get(position));


        //verselist highlight
    /*holder.verselist.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        }
    });*/

        //share verse
        holder.share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toasty.info(activity, "Sharing a verse.", Toast.LENGTH_SHORT, true).show();
                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_TEXT, refernce.get(position) + ":" + versenumber.get(position) + '\n'   + verselist.get(position));
                sendIntent.setType("text/plain");
                activity.startActivity(sendIntent);
            }
        });

        //add in favourite
        holder.addfavoruite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if(isChecked){
                    mDBHelper = new DatabaseHelper(activity);
                    mDb = mDBHelper.getWritableDatabase();
                    ContentValues contentValues=new ContentValues();
                    contentValues.put("id",verseid.get(position));
                    contentValues.put("bookname",refernce.get(position));
                    contentValues.put("versenumber",versenumber.get(position));
                    contentValues.put("verse",verselist.get(position));
                    long check=mDb.insert("favourite",null,contentValues);
                    Log.d("MY_TAG","DB IS NOW "+check);

                    Toasty.success(activity, "Added in favouite", Toast.LENGTH_SHORT, true).show();
                }else {
                    mDBHelper = new DatabaseHelper(activity);
                    mDb = mDBHelper.getWritableDatabase();
                    long delete= mDb.delete("favourite","id=?",new String[]{verseid.get(position)});
                    Toasty.error(activity, "Remove in favouite", Toast.LENGTH_SHORT, true).show();
                }
            }
        });

           /* textToSpeech = new TextToSpeech(activity, new TextToSpeech.OnInitListener() {
                @Override
                public void onInit(int status) {

                    if (status == TextToSpeech.SUCCESS) {
                        result = textToSpeech.setLanguage(Locale.ENGLISH);
                    } else {

                        Toast.makeText(activity, "YOUR DEVICE NOT SUPPORTED", Toast.LENGTH_SHORT).show();
                    }
                }
            });
    */

        //My toggle button
           /* holder.speakverse.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(activity, "I AM CLICKED", Toast.LENGTH_SHORT).show();

                    if (result == TextToSpeech.LANG_NOT_SUPPORTED || result == TextToSpeech.LANG_MISSING_DATA) {

                        Toast.makeText(activity, "Language not supported or Missing", Toast.LENGTH_SHORT).show();

                    } else {

                        textToSpeech.speak(verselist.get(position), TextToSpeech.QUEUE_FLUSH, null);
                    }
                }
            });*/
        return convertView;
    }

    static class ViewHolder {
        private TextView versenumber;
        private TextView verselist;
        private ImageView share;
        private  ToggleButton addfavoruite;
        private ImageView speakverse;

        public ViewHolder(View v) {
            versenumber = (TextView) v.findViewById(R.id.versenumber);
            verselist = (TextView) v.findViewById(R.id.verse);
            share = (ImageView) v.findViewById(R.id.share);
            /*speakverse = (ImageView) v.findViewById(R.id.speakverse);*/
            addfavoruite=(ToggleButton)v.findViewById(R.id.adbookmark);
        }
    }

    public boolean CheckIsDataAlreadyInDBorNot(String TableName,  String dbfield, String fieldValue) {

        mDBHelper = new DatabaseHelper(activity);
        mDb = mDBHelper.getReadableDatabase();
        String Query = "Select * from " + TableName + " where " + dbfield + " = " + fieldValue;
        Cursor cursor = mDb.rawQuery(Query, null);
        if(cursor.getCount() <= 0){
            cursor.close();

            Toast.makeText(activity, "false", Toast.LENGTH_SHORT).show();
            return false;
        }else {

            Toast.makeText(activity, "TRUE", Toast.LENGTH_SHORT).show();
        }
        cursor.close();
        return true;
    }

    public  void opecolorpicker(){
        ColorPicker colorPicker = new ColorPicker(activity);
        ArrayList<String>colors=new ArrayList<>();
        colors.add("#FF0000");
        colors.add("#FFEC33");
        colors.add("#3C33FF");
        colors.add("#DA33FF");
        colors.add("#33FF99");
        colors.add("#90FF33");
        colors.add("#DD33FF");
        colors.add("#F0B27A");
        colors.add("#DAF7A6");
        colors.add("#34495E");

        colorPicker.setColors(colors).setTitle("HIGHLIGHT VERSE").setRoundColorButton(true).setOnChooseColorListener(new ColorPicker.OnChooseColorListener() {
            @Override
            public void onChooseColor(int position, int color) {

                Toast.makeText(activity, ""+color, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancel() {
            }
        }).show();
    }
}

最佳答案

根据你的问题,

<小时/>

使用它,您可以在 ListView 中获取特定项目并处理其点击事件,如果需要,可以更改颜色

 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {Log.e("TAG", "onItemClick: " + position); }});

//使用共享首选项的好方法就是这样

public class AppSharedPreference {

public static final String ABC_APP_SHARED_PREFERENCES =
        "com.example.bachatgatapp.sharedpreferences";


///////Agent Details need to store in shared preferences///////
private static final String MOBILE_FILE = "mobfile";

//设置 - 在共享偏好设置中获取“手机号码”

public static void setMobileFile(Context context, String value) {

    SharedPreferences preferences = context.getSharedPreferences(ABC_APP_SHARED_PREFERENCES, Context.MODE_PRIVATE);

    preferences.edit().putString(MOBILE_FILE, value).commit();
}


public static String getMobileFile(Context context) {

    SharedPreferences preferences = context.getSharedPreferences(ABC_APP_SHARED_PREFERENCES, Context.MODE_PRIVATE);

    return preferences.getString(MOBILE_FILE, "");
}

//编写此代码以保存共享首选项中的值

AppSharedPreference.setMobileFile(this, mobile_number);

关于java - 如何更改ListView项的文本背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404031/

相关文章:

java - MIPS编程基础for循环

java - 如何使用继承的方法在继承层次结构的每个级别显示 SimpleClassName?

android - 我怎么知道 Uri 是否为空?

android - Android在真实设备上显示操作栏项目

android - notifyDataSetChanged() 后焦点丢失

android - 如何实现Android Pull-to-Refresh

java - 使用 Java Servlet 进行长时间登录的最佳方式

java - 从jetty中运行的Web应用程序访问本地目录图像

android - 在 DialogFragment 在内存不足时被杀死后重新创建后关闭它

android - 对齐父底部在 Android 设备上无法正常工作