2016-11-06 1 views
-1

So ursprünglich hatte ich ein String-Array in meinem mainactivity.java, die eine Listview gefüllt und ich konnte auf ein Element in der ListView klicken und es würde Eröffne eine neue Aktivität. Ich habe dieses String-Array jetzt durch eine XML-String-Array-Ressource ersetzt, um die ListView aufzufüllen. Aber jetzt kann ich keine Objekte aus der listView auswählen. Ich hoffe, ich habe das gut erklärt. Danke für jede Hilfe!Versuchen, ein Element aus einem listView, das aus einem XML-String-Array aufgefüllt ist

package com.example.zach.listview; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 


public class MainActivity extends AppCompatActivity { 

//public static String[] routes = {"Information","Crag Map","Main Wall","1. Shark Bait - 5.9", "2. Rain Check - 5.8", "3. Rain Check Direct - 5.7+", 
     //"4. Arocknophobia - 5.7", "5. Balls Deep - 5.9+", "6. Jingle Bells - 5.9", "7. Itching to Climb - 5.8-", "8. Hog Nose 5.10+", 
     //"9. Slab Dance - 5.10", "10. Don't Screw with My Disco - 5.11c"}; 

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



    //ListAdapter routeAdapter = new CustomAdapter(this, routes); 

     //Adapter with refernce to xml string array resourcde 
    ListAdapter routeAdapter = new CustomAdapter(this,  getResources().getStringArray(R.array.routeList)); 
    final ListView routeListView = (ListView) findViewById(R.id.routeListView); 
    routeListView.setAdapter(routeAdapter); 



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

        // working way for selecting certain listview row from  above commented out string array 
        //String route =  String.valueOf(parent.getItemAtPosition(position)); 

        //attempt 
        String route =  String.valueOf(getResources().getStringArray(R.array.routeList)[position]); 

        if (route == "1. Shark Bait - 5.9") { 

         Intent intent = new Intent(view.getContext(),  RouteDetails.class); 
         intent.putExtra("route", "Shark Bait"); 
         startActivity(intent); 
        } 

        if (route == "Information") { 

         Intent intent = new Intent(view.getContext(), RouteDetails.class); 
         intent.putExtra("route", "Birdsboro Rock Climbing  Quarry"); 
         startActivity(intent); 
        } 
       } 

      } 
    ); 
} 
} 

Antwort

0

Versuchen Sie das Array als final String[] zu extrahieren, die Sie innerhalb des Zuhörers zugreifen können.

Sie müssen auch equals, um Strings zu vergleichen.

final String[] values = getResources().getStringArray(R.array.routeList); 
ListAdapter routeAdapter = new CustomAdapter(this, values); 

final ListView routeListView = (ListView) findViewById(R.id.routeListView); 
routeListView.setAdapter(routeAdapter); 

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

       String route = values[position]; 
       if (route.equals("1. Shark Bait - 5.9")) { 

        Intent intent = new Intent(MainActivity.this,  RouteDetails.class); 
        intent.putExtra("route", "Shark Bait"); 
        startActivity(intent); 
       } 
Verwandte Themen