标签: simplecursoradapter

如何从Cursor获取数据到ContextMenu

我想获取光标的当前记录,而不仅仅是ID,以便我可以操作上下文菜单.

我在这里看到这个示例,向您展示如何获取ID:

 @Override
  public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case DELETE_ID:
        AdapterView.AdapterContextMenuInfo info=
          (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

        delete(info.id);
        return(true);
    }

    return(super.onOptionsItemSelected(item));
  }
Run Code Online (Sandbox Code Playgroud)

这很棒,因为它允许我获取所单击的上下文菜单的相应SQLite数据库ID,这将允许我编写一个函数来进行查找.但我当然可以重用当前的光标吗?

我试过这样做:

Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);  
Log.v(TAG, "Current item:" + itemPriority);
Run Code Online (Sandbox Code Playgroud)

但是光标线似乎只返回数据库的模式而不是我之后的记录.

请有人请说清楚.

编辑:感谢@azgolfer我找到了解决方案.我使用fillData()方法来填充适配器.通常,这是在没有变量的情况下声明的.我不得不用一个字段变量重新定义这个方法.在onContextItemSelected中使curstor适配器可见的代码的相关部分在这里:

private void fillData() {
    Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
    startManagingCursor(itemsCursor);
    mItemAdaptor = new ItemAdapter(this, itemsCursor);
    this.setListAdapter(mItemAdaptor);      
}
Run Code Online (Sandbox Code Playgroud)

sqlite android contextmenu simplecursoradapter

6
推荐指数
1
解决办法
2665
查看次数

android ListView:scrollTo不起作用

我有一个视图,其中包含一个绑定到游标适配器的ListView.当光标内容发生变化时,我想将ListView保持在顶部,然后在我的自定义光标适配器中添加:

@Override
protected void onContentChanged() {
    // ...
    myListView.scrollTo(0, 0);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.然后我读到某个地方将这个动作排队如下:

myListView.post(new Runnable() {
    public void run() {
        myListView.scrollTo(0, 0);
    }
});
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.

当内容发生变化时,如何将ListView保持在顶部?

编辑:

只是为了尝试,我添加了一个按钮,并在其onClickListener中调用scrollTo(),它不起作用!我错过了什么?

android cursor android-listview simplecursoradapter

6
推荐指数
3
解决办法
6733
查看次数

Android:如何使用simpleadapter将sd卡中的图像文件放到HashMap中?

我正在读取手机上所选文件夹中的文件,就像您在下面的代码中看到的那样.我怎么能用Imagefile来完成这项工作?最后,我喜欢有一个图像列表,其中包含每个图像的预览.像那样:

[IMG](imgview) - [文件名](字符串)

        for(int i=0; i < files.length; i++) {

        File file = files[i];
            map = new HashMap<String, String>();
        if(!file.isHidden() && file.canRead()) {
            path.add(file.getPath());

            if(file.isDirectory()) {
                map.put("img_list", ""+R.drawable.folder);
                map.put("string_cell", file.getName()+"/");
                your_array_list.add(map);

            }else{


                ImageFileFilter filefilter = new ImageFileFilter(file);

                if(filefilter.accept(file)){
                   //Its an imagefile

                    // ==> I like to replace the ""+R.drawable.image with the file that I have read
                    map.put("img_list", ""+R.drawable.image);


                } else {

                    //Its not an image file

                }

                map.put("string_cell", file.getName());
                your_array_list.add(map);

            }
        } 


    }

        SimpleAdapter mSchedule = new SimpleAdapter(this, your_array_list, …
Run Code Online (Sandbox Code Playgroud)

android listview image hashmap simplecursoradapter

6
推荐指数
1
解决办法
1405
查看次数

如何从SimpleCursorAdapter获取OnItemClickListener中的数据

我正在尝试为我的适配器设置onItemClickListener,它可以工作,但现在我不知道如何获得点击对象?我有一个带注释的列表,点击后我想开始点击备注id的新活动.

private DatabaseHelper dbhelper;

    SimpleCursorAdapter adapter = null;
    public OnItemClickListener listener = new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "it works", Toast.LENGTH_SHORT).show();
        }

    };
    @Override
    public void onCreate(Bundle icicle)
    {
    super.onCreate(icicle);

        setContentView(R.layout.first);

        dbhelper = new DatabaseHelper(getApplicationContext());
        Cursor cursor = dbhelper.getAllNotes();
        startManagingCursor(cursor);
        ListView lv = (ListView)findViewById(android.R.id.list);

        String[] columns = new String[] {"NoteTitle", "NoteDate"};

        int[] to = new int[] { R.id.title_entry, R.id.date_entry};

        adapter = new SimpleCursorAdapter(this, R.layout.note_entry, cursor, columns, …
Run Code Online (Sandbox Code Playgroud)

android simplecursoradapter

5
推荐指数
1
解决办法
6863
查看次数

在Android中为SimpleCursorAdapter添加日期分隔符

我在我的视图上设置了一个SimpleCursorAdapter,当我从数据库中获取数据时,它工作正常.使用ORDER BY日期DESC子句运行查询.所有行都在我的ListView中很好地获取和显示,我正在使用adapter.setViewBinder()为项添加一些逻辑(添加缩略图).

代码是这样的:

// Setup the adapter
adapter = new SimpleCursorAdapter(this, R.layout.rowitem, cursor, FROM, TO);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
  @Override
  public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
    // Only taylor the ImageView in the adapter-list, skip everything else.
    if (view.getId() != R.id.imageItem)
      return false;

    // here goes the logic, but it's cut away due to its size

    }

    return true;
  }
});
Run Code Online (Sandbox Code Playgroud)

现在我想添加一些逻辑:如果两个项之间的日期发生变化,我想添加一个包含日期的小分隔栏,如下所示:

=== DATE1 ===============
Item 1
Item 2
=== DATE2 ===============
Item 3
=== DATE3 ===============
Item …
Run Code Online (Sandbox Code Playgroud)

android listview simplecursoradapter

5
推荐指数
1
解决办法
5585
查看次数

ViewPager上的SimpleCursorAdapter

如何使用SimpleCursorAdapter获取ListView以在ViewPager中显示?单独的Pager工作得很好,ListView在ListActivity中工作正常,但我不知道如何让它在Activity中工作(也许这就是问题).

public class Player extends Activity {
private ViewPager pager;
private static int NUMERO_DE_TELAS = 3;
private AdaptadorDeTelas adaptador;

//Para debug apagar no final    
final String BABAS = "babas";

ContentResolver mContentResolver;

ListView listView;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Adaptador para criar o viewpager
    adaptador = new AdaptadorDeTelas();
    pager = (ViewPager)findViewById(R.id.pageradapter);
    pager.setAdapter(adaptador);        

    pager.setCurrentItem(1);       





}
private class AdaptadorDeTelas extends PagerAdapter{

    @Override
    public int getCount(){
        return NUMERO_DE_TELAS;
    }

    @Override
    public Object instantiateItem(View collection, int position){           


        View layout;
        LayoutInflater inflater = …
Run Code Online (Sandbox Code Playgroud)

android listview simplecursoradapter android-viewpager

5
推荐指数
1
解决办法
2687
查看次数

创建自定义简单光标适配器

我想创建一个非常简单的游标自定义游标适配器,以方便在点击时更改行项目的颜色.使用以下代码

private static int save = -1;

public void onListItemClick(ListView parent, View v, int position, long id) { 

    parent.getChildAt(position).setBackgroundColor(Color.BLUE);

    if (save != -1 && save != position){
        parent.getChildAt(save).setBackgroundColor(Color.BLACK);
    }

    save = position;                

}
Run Code Online (Sandbox Code Playgroud)

我从这个线程获得了代码/sf/answers/535491631/

我会使用一个简单的游标适配器并将代码放在onClick中,但由于ListFragment中的默认列表重用了视图,因此滚动多个视图时会突出显示.谈到IRC,有人建议我创建一个自定义游标适配器.但是,我似乎无法找到如何执行此操作的最佳实践,以及上述代码段所适用的位置.可以非常感谢帮助.

public class AreaCursorAdapter extends CursorAdapter {
    private Context context;


    public AreaCursorAdapter(Context context, Cursor c) {
        super(context, c);
        // TODO Auto-generated constructor stub
    }

    @Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView list_item = (TextView)view.findViewById(android.R.id.text1);
    list_item.setText(cursor.getString(cursor.getColumnIndex(INDICATOR_NAME)));

}

@Override
public View newView(Context context, …
Run Code Online (Sandbox Code Playgroud)

android android-listview simplecursoradapter android-listfragment android-cursoradapter

5
推荐指数
1
解决办法
1万
查看次数

在自定义列表视图中显示联系号码和联系人姓名

谁能告诉我如何在自定义列表视图中显示电话号码和联系人姓名?代码粘贴在下面

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class AddContacts extends Activity implements OnClickListener {

    ListView list;
    Cursor cursor;
    SimpleCursorAdapter adapter;
    String phoneNumber;
    Button AddNumber;
    EditText number1;
    EditText number2;
    EditText number3;
    String contact1;
    String contact2;
    CheckBox checkBox;
    String contact_name;

    static final String TAG = "In AddContacts";

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
        AddNumber = (Button) …
Run Code Online (Sandbox Code Playgroud)

android listview simplecursoradapter

5
推荐指数
1
解决办法
3万
查看次数

使用自定义simpleCursorAdapter

我试图使用自定义适配器访问列表活动.我已经直接尝试了它而没有使用任何自定义适配器它工作正常,但因为我想在列表视图中添加更多功能我想实现自定义适配器.现在我有试过但我得到一个没有数据可见的空列表视图.列表 - 活动

public class MainActivity extends ListActivity {

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

        String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

         String[] projection = {
                    MediaStore.Audio.Media._ID,
                    MediaStore.Audio.Media.ARTIST,
                    MediaStore.Audio.Media.TITLE,
                    MediaStore.Audio.Media.DATA,
                    MediaStore.Audio.Media.DISPLAY_NAME,
                    MediaStore.Audio.Media.DURATION,

            };
            //query 

            musiccursor = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection,selection,null,sortOrder);
            music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);


            int a[]= new int[]{R.id.TitleSong,R.id.Artist};


            Custom_Adapter adapter = new Custom_Adapter(this,R.layout.music_items, musiccursor, new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST} ,a);

            this.setAdapter(adapter);

            }
    }
Run Code Online (Sandbox Code Playgroud)

定制适配器

    public class Custom_Adapter extends SimpleCursorAdapter {


    private Context mContext;
    private Context appContext;
    private int layout;
    private Cursor cr;
    private final …
Run Code Online (Sandbox Code Playgroud)

android listview cursor android-listview simplecursoradapter

5
推荐指数
1
解决办法
1万
查看次数

获取其中包含歌曲的类型名称列表

我正在使用CursorLoder类从android的媒体内容提供者获取Genre列表.下面是我的光标查询来获取类型列表.

 public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        // currently filtering.
        Uri baseUri;
        baseUri = MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI;
        String[] STAR = { "*" };
        return new CursorLoader(getActivity(), baseUri, STAR, null, null, null );
    }
Run Code Online (Sandbox Code Playgroud)

现在,我从媒体内容提供商处获得了所有类型列表,但是我得到的数据存在问题.我也得到了之前创建的流派名称,但现在我没有歌曲.

我只想要有歌曲的流派,而不是没有歌曲的流派名称.

任何人都可以帮助我吗?

UPDATE

我可以使用下面的代码获取所有类型及其歌曲...

private void getGenresList() {

        //-------------------------------------

        int index;
        long genreId;
        int count;
        Uri uri;
        Cursor genrecursor;
        Cursor tempcursor;
        String[] proj1 = {MediaStore.Audio.Genres.NAME, MediaStore.Audio.Genres._ID};   
        String[] proj2={MediaStore.Audio.Media.DISPLAY_NAME};

         genrecursor=getActivity().getContentResolver().query(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI,proj1,null, null, null);
         if(genrecursor.moveToFirst())
         {
             do{
                index = genrecursor.getColumnIndexOrThrow(MediaStore.Audio.Genres.NAME);            
                System.out.println("GENRE NAME: "+genrecursor.getString(index));
                System.out.println("======================================");

                index = genrecursor.getColumnIndexOrThrow(MediaStore.Audio.Genres._ID);             
                genreId=Long.parseLong(genrecursor.getString(index));
                uri = …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider simplecursoradapter android-cursorloader

5
推荐指数
1
解决办法
2176
查看次数