Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据数据库填充数据将图像源设置为listView_Android_Database_Android Listview_Imageview_Android Viewbinder - Fatal编程技术网

Android 如何根据数据库填充数据将图像源设置为listView

Android 如何根据数据库填充数据将图像源设置为listView,android,database,android-listview,imageview,android-viewbinder,Android,Database,Android Listview,Imageview,Android Viewbinder,基本上,我要做的是根据从预创建的数据库中获取的id,动态地将图像源设置为图像视图。这是我的列表片段: public class teamsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { String[] teams; private SimpleCursorAdapter adapter; @Override public vo

基本上,我要做的是根据从预创建的数据库中获取的id,动态地将图像源设置为图像视图。这是我的列表片段:

public class teamsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
    String[] teams;
    private SimpleCursorAdapter adapter; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] projection = {DBAdapter.KEY_ROWID, DBAdapter.KEY_NAME};
        String[] uiBindFrom = {DBAdapter.KEY_NAME};
        int[] uiBindTo = {R.id.label};

        getLoaderManager().initLoader(0, null, this);
        adapter = new SimpleCursorAdapter(
                getActivity().getApplicationContext(), R.layout.team_row,
                null, uiBindFrom, uiBindTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        adapter.setViewBinder(VIEW_BINDER);
        setListAdapter(adapter);
    }
    static final SimpleCursorAdapter.ViewBinder VIEW_BINDER = new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            if(view.getId() != R.id.icon) return false;
            ImageView teamIcon = (ImageView) view;
            int idTeam = cursor.getInt(cursor.getColumnIndex(DBAdapter.KEY_ROWID));
            switch(idTeam) {
            case 1:
                teamIcon.setImageResource(R.drawable.team1);
                break;
            case 2:
                teamIcon.setImageResource(R.drawable.team2);
                break;
            }
            return true;
        }
    };
}
公共类teamsListFragment扩展ListFragment实现LoaderManager.LoaderCallbacks{
字符串[]团队;
专用SimpleCursorAdapter适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
String[]projection={DBAdapter.KEY_ROWID,DBAdapter.KEY_NAME};
字符串[]uiBindFrom={DBAdapter.KEY_NAME};
int[]uiBindTo={R.id.label};
getLoaderManager().initLoader(0,null,this);
适配器=新的SimpleCursorAdapter(
getActivity().getApplicationContext(),R.layout.team_行,
null、uiBindFrom、uiBindTo、CursorAdapter.FLAG\u REGISTER\u CONTENT\u OBSERVER);
adapter.setViewBinder(视图绑定器);
setListAdapter(适配器);
}
静态最终SimpleCorsorAdapter.ViewBinder视图_BINDER=新SimpleCorsorAdapter.ViewBinder(){
@凌驾
公共布尔setViewValue(视图、光标、int-columnIndex){
if(view.getId()!=R.id.icon)返回false;
ImageView团队图标=(ImageView)视图;
intidteam=cursor.getInt(cursor.getColumnIndex(DBAdapter.KEY_ROWID));
交换机(idTeam){
案例1:
teamIcon.setImageResource(R.drawable.team1);
打破
案例2:
teamIcon.setImageResource(R.drawable.team2);
打破
}
返回true;
}
};
}
这是我的teamrow.xml

<ImageView
    android:id="@+id/icon"
    android:layout_width="30dp"
    android:layout_height="24dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="8dp"
     />

<TextView
    android:id="@+id/label"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="6dp"
    android:lines="1"
    android:text="@+id/TextView01"
    android:textSize="24dp" />


问题是,如果未设置图像源,则无法工作。我认为是视图绑定器,但我是android新手,我非常感谢您能告诉我我的错误,或者有更好的方法来实现这一点。提前谢谢。

为什么你要用
静态最终版
来声明你的活页夹?@Merlin我这样做是因为我遵循本教程,他们是这样做的。我在另一本书中注意到了这一点。。。我对技术原因很好奇。。。我可能需要重新审视Android的优化。