代码之家  ›  专栏  ›  技术社区  ›  user45678

如何在SimpleCursorAdapter中自定义文本视图-Android

  •  2
  • user45678  · 技术社区  · 10 年前

    我想在SimpleCursorAdapter中自定义我的文本视图。如果不需要太多代码更改,有人可以帮助我以最简单的方式来实现这一点吗。。。

    下面是我的工作代码,其中我从类中提取字符串并插入SimpleCursorAdapter

    代码:

    public class MyListActivity extends ListActivity {
        /** Called when the activity is first created. */
    
    
        private Cursor mCursor = null;
    
    
        @SuppressWarnings("deprecation")
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.weeklysettings);
            getListView().addHeaderView(buildHeader(), null , false);
            Cursor mCursor = getCursorDetails();
            startManagingCursor(mCursor);
    
            ListAdapter adapter = new SimpleCursorAdapter(this, // Context.
                    R.layout.listview, // Specify the row template
                                        // to use (here, three
                                        // columns bound to the
                                        // two retrieved cursor
                                        // rows).
                    mCursor, // Pass in the cursor to bind to.
                    // Array of cursor columns to bind to.
                    new String[] { MyClass.EVENT,
                    MyClass.CHANNEL_NAME,
                    MyClass.PROGRAM_TITLE,
                    MyClass.EVENTTIME },
    
                    new int[] { R.id.event, R.id.channelname, R.id.programtitle, R.id.timestamp});
            // Bind to our new adapter.
            setListAdapter(adapter);
            //setListAdapter(new ArrayAdapter<String>(this, R.layout.listview, ynetList));
    
        }
    
        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            super.onPause();
            stopManagingCursor(mCursor);
        }
    
    
        @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            startManagingCursor(mCursor);
        }
        private ViewGroup buildHeader() {
            LayoutInflater infalter = getLayoutInflater();
            ViewGroup header = (ViewGroup) infalter.inflate(R.layout.listitem_header, getListView(), false);
            header.setEnabled(false);
            return(header);
          }
        @Override
        public void onBackPressed() {
            // TODO Auto-generated method stub
             Intent intent = new Intent(this, SettingsActivity.class);
             intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
             startActivity(intent);
             finish();
             super.onBackPressed();
        }
    
        private Cursor getCursorDetails() {
    
    
            String sortOrder = DataExchangeFacility.TIMESTAMP
                    + " COLLATE LOCALIZED DESC";
    
            mCursor = getApplicationContext().getContentResolver().query(
                    DataExchangeFacility.CONTENT_URI_GRACE, null, null, null, sortOrder);
    
            return mCursor;
    
        }
    }
    
    1 回复  |  直到 10 年前
        1
  •  4
  •   Simas    10 年前

    试试看:

        ListAdapter adapter = new SimpleCursorAdapter(this, // Context.
                R.layout.listview, // Specify the row template
                // to use (here, three
                // columns bound to the
                // two retrieved cursor
                // rows).
                mCursor, // Pass in the cursor to bind to.
                // Array of cursor columns to bind to.
                new String[] { MyClass.EVENT,
                        MyClass.CHANNEL_NAME,
                        MyClass.PROGRAM_TITLE,
                        MyClass.EVENTTIME },
    
                new int[] { R.id.event, R.id.channelname, R.id.programtitle, R.id.timestamp}) {
            @Override
            public void setViewText(TextView v, String text) {
                // v is your TextView
                v.setTextColor(Color.RED);
                super.setViewText(v, text);
            }
        };