Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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
Java android中的SimpleCrsorAdapter_Java_Android_Simplecursoradapter - Fatal编程技术网

Java android中的SimpleCrsorAdapter

Java android中的SimpleCrsorAdapter,java,android,simplecursoradapter,Java,Android,Simplecursoradapter,这是我第一次创建android应用程序。我现在要创建的是一个列表,当用户单击列表中的某个名称时,将显示单击名称的详细信息。我正在尝试创建简单的游标适配器。但是发生了一个错误 The constructor SimpleCursorAdapter(QuestionsNew, int, Cursor, String[], int[]) is undefined. 你认为可能的原因是什么。下面是我代码的一部分 package tk.wew.wew; import info.androidhive.

这是我第一次创建android应用程序。我现在要创建的是一个列表,当用户单击列表中的某个名称时,将显示单击名称的详细信息。我正在尝试创建简单的游标适配器。但是发生了一个错误

The constructor SimpleCursorAdapter(QuestionsNew, int, Cursor, String[], int[]) is undefined.
你认为可能的原因是什么。下面是我代码的一部分

package tk.wew.wew;

import info.androidhive.sqlite.model.LocalStorage;
import info.androidhive.sqlite.model.Message;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import static tk.askd.askd.CommonUtilities.*;

public class QuestionsNew extends Fragment {
    Cursor cursor;
    ListView nameList;
    protected ListAdapter adapter;
    // TextView tvCompany = (TextView)
    // findViewById(R.id.tvContactListCompany);
    private static final String TAG = "Question";

    private ListView list;

    private static List questions;

    ArrayList<String> senders = new ArrayList<String>(); 
    ArrayList<String> shortMsg = new ArrayList<String>();
    ArrayList<Integer> imageId = new ArrayList<Integer>();

    SimpleCursorAdapter myCursorAdapter;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view;

        //CommonUtilities.sendAQuestion(getActivity(), "msg123Kjjj11", "richmund_10023", "lofrancs1231", "Apil ka?");

        questions = CommonUtilities.getAllQuestions(getActivity(), "N", null);

        if(questions.size() > 0){
            view = inflater.inflate(R.layout.questions_main_layout, container, false);
            AskdDatabaseHelper msg_db = new AskdDatabaseHelper(getActivity());

            List<Message> messages = msg_db.getAllQuestions("N", "lofrancs1231");


            Cursor cursor = msg_db.getAllQuestions3();

         // Setup mapping from cursor to view fields:
            String[] fromFieldNames = new String[] { "KEY_MSG_MESSAGE_ID","KEY_MSG_MESSAGE"  };
            int[] toViewIDs = new int[] { R.id.KEY_MSG_MESSAGE_ID, R.id.KEY_MSG_MESSAGE_ID };

           /* SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this, // Context
                            R.layout.message_list_item, // Row layout template
                            cursor, // cursor (set of DB records to map)
                            fromFieldNames, // DB Column names
                            toViewIDs // View IDs to put information in
            );*/

           myCursorAdapter = new SimpleCursorAdapter(QuestionsNew.this,
                    R.layout.message_list_item,
                    cursor,
                    fromFieldNames,
                    toViewIDs);

            ListView contactList = (ListView) getView().findViewById(R.id.lvContacts);
            contactList.setAdapter(myCursorAdapter);


            for(int m=0; m<questions.size(); m++){
                senders.add(messages.get(m).getFromUser());
                shortMsg.add(messages.get(m).getMessage());
                imageId.add(R.drawable.ic_launcher);
            }

        } else {
            view = inflater.inflate(R.layout.fragments_question_new, container, false);
            ((TextView)view.findViewById(R.id.textView)).setText("No New Questions");
        }      

        return view;
    }

    @Override
    public void onStart(){
        super.onStart();

        Log.v(TAG, ": New onStart");

        if(questions.size() > 0){

            list = (ListView) getView().findViewById(R.id.list);

            CustomLst adapter = new CustomLst(getActivity(), senders, imageId, shortMsg);

            list.setAdapter(adapter);

            list.setOnItemClickListener(new OnItemClickListener(){

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

//                  Cursor listCursor = (Cursor) parent.getItemAtPosition(position);
//                  Cursor listCursor = (Cursor) parent.getAdapter().getItem(position);
//                  Log.d("TAG", (String) parent.getItemAtPosition(id));

                    Toast.makeText(getActivity(), 
                            "Position:"+ parent.getItemIdAtPosition((int) id), Toast.LENGTH_LONG)
                            .show();

//                  int message = listCursor.getInt(listCursor.getColumnIndex(AskdDatabaseHelper.KEY_MSG_MESSAGE_ID));
                    /*   
                Intent intent = new Intent(getActivity(), QuestionDetail.class);
                    intent.putExtra("Message_ID", listCursor.getString(listCursor.getColumnIndex(AskdDatabaseHelper.KEY_MSG_MESSAGE_ID)));
                    startActivity(intent);
                    // ListView clicked item index
                    int Position = position;

                    // ListView clicked item value
                    String itemValue = (String) list.getItemAtPosition(Position);

                    // show alert
//                  Toast.makeText(getActivity(), 
//                          "Position:" + Position + " Listitem:" + itemValue, Toast.LENGTH_LONG)
//                          .show();
*/                  
                }

            });
        } else {
            Log.e(TAG, "No new question");
        }

    }

}
包tk.wew.wew;
导入info.androidhive.sqlite.model.LocalStorage;
导入info.androidhive.sqlite.model.Message;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
导入android.content.Intent;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.SimpleCursorAdapter;
导入android.widget.TextView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
导入静态tk.askd.askd.CommonUtilities.*;
公共类问题新扩展片段{
光标;
列表视图名称列表;
受保护的ListAdapter适配器;
//TextView电视公司=(TextView)
//findViewById(R.id.tvContactListCompany);
私有静态最终字符串TAG=“Question”;
私有列表视图列表;
私有静态列表问题;
ArrayList senders=新的ArrayList();
ArrayList shortMsg=新的ArrayList();
ArrayList imageId=新的ArrayList();
SimpleCursorAdapter myCursorAdapter;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图;
//sendAQuestion(getActivity(),“msg123Kjjj11”,“richmund_10023”,“lofrancs1231”,“Apil ka?”);
questions=CommonUtilities.getAllQuestions(getActivity(),“N”,null);
如果(questions.size()>0){
视图=充气机。充气(右布局。主布局,容器,假);
AskdDatabaseHelper msg_db=新的AskdDatabaseHelper(getActivity());
列表消息=msg_db.getAllQuestions(“N”,“lofrancs1231”);
Cursor Cursor=msg_db.getAllQuestions3();
//设置从光标到视图字段的映射:
String[]fromFieldNames=新字符串[]{“KEY\u MSG\u MESSAGE\u ID”,“KEY\u MSG\u MESSAGE”};
int[]toViewIDs=newint[]{R.id.KEY\u MSG\u MESSAGE\u id,R.id.KEY\u MSG\u MESSAGE\u id};
/*SimpleCursorAdapter myCursorAdapter=新SimpleCursorAdapter(此,//上下文
R.layout.message\u列表\u项,//行布局模板
游标,//游标(要映射的数据库记录集)
fromFieldNames,//DB列名
toViewIDs//查看要放入信息的ID
);*/
myCursorAdapter=新的SimpleCursorAdapter(问题新建,
R.layout.message\u list\u项,
光标,
从字段名,
toViewIDs);
ListView联系人列表=(ListView)getView().findViewById(R.id.lvContacts);
contactList.setAdapter(myCursorAdapter);
对于(int m=0;m 0){
list=(ListView)getView().findViewById(R.id.list);
CustomLst adapter=new CustomLst(getActivity(),senders,imageId,shortMsg);
list.setAdapter(适配器);
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//游标listCursor=(游标)parent.getItemAtPosition(位置);
//游标listCursor=(游标)parent.getAdapter().getItem(位置);
//Log.d(“TAG”,(String)parent.getItemAtPosition(id));
Toast.makeText(getActivity(),
位置:“+parent.getItemIDataPosition((int)id),Toast.LENGTH\u LONG)
.show();
//int message=listCursor.getInt(listCursor.getColumnIndex(AskdDatabaseHelper.KEY_MSG_message_ID));
/*   
Intent Intent=新意图(getActivity(),QuestionDetail.class);
intent.putExtra(“Message_ID”,listCursor.getString(listCursor.getColumnIndex(AskdDatabaseHelper.KEY_MSG_Message_ID));
星触觉(意向);
//ListView单击的项目索引
int位置=位置;
//ListView单击的项目值
String itemValue=(String)list.getItemAtPosition(Position);
//显示警惕
//Toast.makeText(getActivity(),
//位置:“+Position+”列表项:“+itemValue,Toast.LENGTH\u LONG)
//.show();
*/                  
}
});
}否则{
Log.e(标签“无新问题”);
}
}
}

如下更改构造函数

 myCursorAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.message_list_item,
                cursor,
                fromFieldNames,
                toViewIDs);
第一个参数是
上下文
。此
问题是新的。此
不是有效的上下文。片段不扩展
上下文

活动

java.lang.Object
   ↳    android.content.Context // check this
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity // check this
碎片

java.lang.Object
   ↳    android.app.Fragment // check this
因此,使用
getActivity()

公共最终活动getActivity()

在API级别11中添加,返回此片段当前所在的活动 与…有关

SimpleCursorAdapter(上下文上下文、int布局、光标c、字符串[]) from,int[]to)此构造函数在API级别11中被弃用。此 不鼓励使用该选项,因为它会导致执行游标查询 在应用程序的UI线程上,因此可能会导致响应性差 甚至应用程序没有响应错误。作为替代,使用 带有游标装入器的装入器管理器

使用
ArrayAdapter时也是如此