当SimpleCursorAdapter将表中的值添加到listView时检查列值

问题描述 投票:0回答:1

在我的表中,我的列名"FAVOURITE"的值为0或1(false / true)。将表格中的值添加到listView时,我想检查FAVOURITE列中的值,如果value为1则添加心脏表情符号,如果value为0则添加空白空间。我正在使用SimpleCursorAdapter将我的数据添加到列表视图。

这里是一个片段,我在其中将值添加到listView

    cursor = db.query("SERIAL",new String[]{"_id","NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"},null,null,null,null,null);
    if(cursor.moveToFirst())
    {
        SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(this, R.layout.my_custom_list,
                cursor,
                new String[]{"NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"}, //"Ulubione" mean "Favourite"
                new int[]{R.id.textNazwa,R.id.textSerwis,R.id.Sezon,R.id.aktualnyOdcinek,R.id.iloscOdcinkow, R.id.Ulubione},
                0);


        listViewSeriale.setAdapter(listAdapter);
    }

以及此类的完整代码:

public class BazaDanych extends AppCompatActivity {
    private ProjektSQLiteOpenHelper bazaDanych;
    private SQLiteDatabase db;
    private Cursor cursor;
    private ListView listViewSeriale;


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

        listViewSeriale = (ListView) findViewById(R.id.listViewSeriale);
        try
        {
            bazaDanych = new ProjektSQLiteOpenHelper(this);
            db = bazaDanych.getWritableDatabase();
        }
        catch (SQLException e)
        {
            Toast toast = Toast.makeText(this,"Baza danych niedostępna",Toast.LENGTH_LONG);
            toast.show();
            finish();
        }

        AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> listViewOrganizacje, View view, int position, long id) {
                Intent intent = new Intent(BazaDanych.this,BazaDanychAktualizacja.class);
                intent.putExtra(BazaDanychAktualizacja.EXTRA_ORGANIZACJA_ID, (int) id);
                startActivity(intent);
            }
        };
        listViewSeriale.setOnItemClickListener(itemClickListener);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(BazaDanych.this,BazaDanychDopisz.class);
                startActivity(intent);
            }
        });

    }

    @Override
    public void onResume()
    {
        super.onResume();
        cursor = db.query("SERIAL",new String[]{"_id","NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"},null,null,null,null,null);
        if(cursor.moveToFirst())
        {
            SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(this, R.layout.my_custom_list,
                    cursor,
                    new String[]{"NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"},
                    new int[]{R.id.textNazwa,R.id.textSerwis,R.id.Sezon,R.id.aktualnyOdcinek,R.id.iloscOdcinkow, R.id.Ulubione}, //"Ulubione" mean "Favourite"
                    0);


            listViewSeriale.setAdapter(listAdapter);
        }

    }

    public void odejmijOdcinekZListy(View view){
        TextView serwTest = findViewById(R.id.textSerwis);
        Toast toast = Toast.makeText(this, "Odejmij odcinek" + serwTest.getText(), Toast.LENGTH_LONG);
        toast.show();
    }


}

也许我应该在创建列表视图之后阅读列,并按findViewById(R.id.Ulubione).getText and .setText检查所有元素,但是如何使用listView做到这一点?凹凸

android android-studio listview simplecursoradapter
1个回答
0
投票

我在这篇文章stackoverflow中偶然找到了解决方案>

我的onResume()方法:

    @Override
    public void onResume()
    {
        super.onResume();
        cursor = db.query("SERIAL",new String[]{"_id","NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"},null,null,null,null,null);
        if(cursor.moveToFirst())
        {
            SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(this, R.layout.my_custom_list,
                    cursor,
                    new String[]{"NAME","SERVICE","SEASON", "CURRENT_EPISODE", "EPISODES", "FAVOURITE"},
                    new int[]{R.id.textNazwa,R.id.textSerwis,R.id.Sezon,R.id.aktualnyOdcinek,R.id.iloscOdcinkow, R.id.Ulubione}, //"Ulubione" mean "Favourite"
                    0){

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

                    View v = super.getView(position, convertView, parent);

                    TextView tx = (TextView) v.findViewById(R.id.Ulubione);
                    if(Integer.parseInt(tx.getText().toString()) == 1)
                        tx.setText("❤️");
                    else
                        tx.setText("♡");

               return v;
               }

           };


            listViewSeriale.setAdapter(listAdapter);
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.