Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 onCreate()中选择第一个索引?_Android_Nullpointerexception - Fatal编程技术网

Android 如何在listview onCreate()中选择第一个索引?

Android 如何在listview onCreate()中选择第一个索引?,android,nullpointerexception,Android,Nullpointerexception,我正在尝试在第一次加载onCreate时选择listview中的第一个索引。我尝试了listView.setSelection0,但出现了一些错误。这是我的密码 public class QandAPractice extends AppCompatActivity { String qsid; ListView listView; ArrayList<String> myqid; RadioButton r1,r2,r3,r4; String txtcontent, txtTime

我正在尝试在第一次加载onCreate时选择listview中的第一个索引。我尝试了listView.setSelection0,但出现了一些错误。这是我的密码

public class QandAPractice extends AppCompatActivity {
String qsid;
ListView listView;
ArrayList<String> myqid;
RadioButton r1,r2,r3,r4;
String txtcontent, txtTimer,txtAnskey,txtImg, txtA, txtB, txtC, txtD, txtID;
private static final String TAG_QID = "id";
private static final String TAG_TITLE = "content";
private static final String TAG_TIMER = "timer";
private static final String TAG_IMAGE = "images";
private static final String TAG_QSID = "qsid";
private static final String TAG_KEY = "key";
private static final String TAG_A = "A";
private static final String TAG_B = "B";
private static final String TAG_C = "C";
private static final String TAG_D = "D";
ArrayList<HashMap<String, String>> questions;
Dialog quizDialog;
public int i = 60;
public int loadindex = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qand_apractice);
    questions = new ArrayList<>();
    myqid = new ArrayList<>();
    Bundle b = getIntent().getExtras();
    setTitle(b.getString("subject"));
    qsid = b.getString("qsid");
    quizDialog = new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
    listView = findViewById(R.id.lvquestions);
    getJSON(Constants.ROOT_URL+"mobile_question_index.php?qsid="+qsid);

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

            txtID = ((TextView) view.findViewById(R.id.quiz_id)).getText()
                    .toString();
            txtcontent = ((TextView) view.findViewById(R.id.quiz_content)).getText()
                    .toString();
            txtTimer = ((TextView) view.findViewById(R.id.quiz_timer)).getText()
                    .toString();
            txtAnskey = ((TextView) view.findViewById(R.id.quiz_key)).getText()
                    .toString();
            txtA = ((TextView) view.findViewById(R.id.quiz_A)).getText()
                    .toString();
            txtB = ((TextView) view.findViewById(R.id.quiz_B)).getText()
                    .toString();
            txtC = ((TextView) view.findViewById(R.id.quiz_C)).getText()
                    .toString();
            txtD = ((TextView) view.findViewById(R.id.quiz_D)).getText()
                    .toString();
            txtImg = ((TextView) view.findViewById(R.id.quiz_image)).getText()
                    .toString();
            showQuiz();

        }
    });
    listView.setSelection(0);
    listView.getSelectedView().setSelected(true);
}
private void getJSON(final String urlWebService) {

    class GetJSON extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            try {
                loadIntoListView(s);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        protected String doInBackground(Void... voids) {
            try {
                URL url = new URL(urlWebService);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                StringBuilder sb = new StringBuilder();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String json;
                while ((json = bufferedReader.readLine()) != null) {
                    sb.append(json + "\n");
                }
                return sb.toString().trim();
            } catch (Exception e) {
                return null;
            }
        }
    }
    GetJSON getJSON = new GetJSON();
    getJSON.execute();
}

private void loadIntoListView(String json) throws JSONException {
    JSONArray jsonArray = new JSONArray(json);
    //String[] question = new String[jsonArray.length()];

    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject obj = jsonArray.getJSONObject(i);
        String id = obj.getString(TAG_QID);
        String content = obj.getString(TAG_TITLE);
        String image = obj.getString(TAG_IMAGE);
        String a = obj.getString(TAG_A);
        String b = obj.getString(TAG_B);
        String c = obj.getString(TAG_C);
        String d = obj.getString(TAG_D);
        String key = obj.getString(TAG_KEY);
        String timer = obj.getString(TAG_TIMER);
        HashMap<String, String> map = new HashMap<String, String>();

        map.put(TAG_QID,id);
        map.put(TAG_TITLE,content);
        map.put(TAG_IMAGE,image);
        map.put(TAG_A,a);
        map.put(TAG_B,b);
        map.put(TAG_C,c);
        map.put(TAG_D,d);
        map.put(TAG_KEY,key);
        map.put(TAG_TIMER,timer);
        myqid.add(id);
        questions.add(map);
    }
    // ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, question);
    SimpleAdapter adapter = new SimpleAdapter(
            QandAPractice.this, questions,
            R.layout.quizlayout, new String[]{TAG_QID,
            TAG_TITLE, TAG_IMAGE,TAG_A,TAG_B,TAG_C,TAG_D,TAG_KEY,TAG_TIMER},
            new int[]{R.id.quiz_id, R.id.quiz_content, R.id.quiz_image,R.id.quiz_A,R.id.quiz_B,
                    R.id.quiz_C,R.id.quiz_D,R.id.quiz_key,R.id.quiz_timer});
/*    AtomicReference<ListAdapter> la =
            new AtomicReference<>(new ListAdapter(getApplicationContext(), questions));*/

    listView.setAdapter(adapter);
}

我读过一些和我有同样问题的帖子。他们使用适配器来解决这个问题,但在我的情况下,这个错误仍然会发生。非常感谢您的帮助。

在将适配器设置为Listview后进行选择

private void loadIntoListView(String json) throws JSONException {
JSONArray jsonArray = new JSONArray(json);
//String[] question = new String[jsonArray.length()];

for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject obj = jsonArray.getJSONObject(i);
    String id = obj.getString(TAG_QID);
    String content = obj.getString(TAG_TITLE);
    String image = obj.getString(TAG_IMAGE);
    String a = obj.getString(TAG_A);
    String b = obj.getString(TAG_B);
    String c = obj.getString(TAG_C);
    String d = obj.getString(TAG_D);
    String key = obj.getString(TAG_KEY);
    String timer = obj.getString(TAG_TIMER);
    HashMap<String, String> map = new HashMap<String, String>();

    map.put(TAG_QID,id);
    map.put(TAG_TITLE,content);
    map.put(TAG_IMAGE,image);
    map.put(TAG_A,a);
    map.put(TAG_B,b);
    map.put(TAG_C,c);
    map.put(TAG_D,d);
    map.put(TAG_KEY,key);
    map.put(TAG_TIMER,timer);
    myqid.add(id);
    questions.add(map);
}
// ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, question);
SimpleAdapter adapter = new SimpleAdapter(
        QandAPractice.this, questions,
        R.layout.quizlayout, new String[]{TAG_QID,
        TAG_TITLE, TAG_IMAGE,TAG_A,TAG_B,TAG_C,TAG_D,TAG_KEY,TAG_TIMER},
        new int[]{R.id.quiz_id, R.id.quiz_content, R.id.quiz_image,R.id.quiz_A,R.id.quiz_B,
                R.id.quiz_C,R.id.quiz_D,R.id.quiz_key,R.id.quiz_timer});
/*    AtomicReference<ListAdapter> la =
        new AtomicReference<>(new ListAdapter(getApplicationContext(), questions));*/

  listView.setAdapter(adapter);
  listView.setSelection(0);
  listView.getSelectedView().setSelected(true);

 }

我想我知道了你面临的主要问题。在填充列表视图之前,请尝试选择一个项目。您需要在listview上添加适配器后设置此选项。 在添加适配器后添加此行

listView.setAdapter(adapter);
listView.setSelection(0);
listView.getSelectedView().setSelected(true);
或使用

listView.setAdapter(adapter);
listView.setItemChecked(0, true)
这将显示首次开幕的祝酒词。这应该添加在适配器集之后

Iterator myVeryOwnIterator = questions.get(0).keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
    String key=(String)myVeryOwnIterator.next();
    String value=(String)meMap.get(key);
    Toast.makeText(ctx, "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
}

谢谢你的帮助,法兹·米尔先生。一个问题是,该错误始终指向此行listView.getSelectedView.setSelectedtrue;这对查看第一个索引的内容是否有必要?您试图实现的目标是什么?listView.getSelectedView.setSelectedtrue注释这一行并选中Yes sir我尝试注释掉这一行,但仍然要显示或甚至是toast数据来自listView中的第一个项目,并且没有出现错误。如果它有帮助,请接受答案谢谢sir,但是您可以确定如何显示或toast数据吗?我的意思是,如果我运行“活动”,它将自动调整listview中第一项的值。您希望显示哪些内容?您已经拥有包含map对象的问题列表。您可以很容易地从map对象中获取内容。感谢Faysal Ahmed爵士,我已经用以下代码找到了解决方案listView.performItemClicklistView.getAdapter.getView loadindex,null,null,loadindex,listView.getItemIdAtPositionloadindex;归功于所有者。此代码将起作用,但这不是正确的方法。您已经有了一个列表,为什么要单击某个项目并获取该列表?
Iterator myVeryOwnIterator = questions.get(0).keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
    String key=(String)myVeryOwnIterator.next();
    String value=(String)meMap.get(key);
    Toast.makeText(ctx, "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
}