2016-04-14 26 views
-1

Bir listedeki değerleri dinamik olarak ayarlamaya çalışıyorum. Başlangıçta bu, onCreate etkinliğinde yer alıyordu. Belki de ListView nesnesinin başlatılmamış olduğunu düşünerek bunu bir düğme tıklatma olayına taşıdım. Bu basit örnek, "Ne yazık ki, ListViewTest durdu" düğmesi ile herhangi bir istisna yığın izi bulunamadığında düğmeye bastığımda güzel bir şekilde patlar. Ayrıca, gerçek bir hedef uygulamasının, ListView konteyner sekmesine dokunulduğunda görünene kadar patlamaması da dikkati çeker.ArrayAdapter uygulamasını her seferinde kilitleniyor uygulaması. Android Studio 2.0

El Capitan 10.11.4'teki Nexus (5X API 23) öykünücüsü ile tamamen güncelleştirilmiş bir Android Studio 2.0 kullanıyorum.

Herhangi bir ipucu takdir edilecektir.

MainActivity.java

package com.greencountrytechnical.listviewtest; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button btn=(Button) findViewById(R.id.button); 
     btn.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             onYouTappedMe(); 
            } 
           } 

     ); 
    } 
    private void onYouTappedMe() 
    { 
     String[] noob={"why","does","this","not","work","?"}; 
     ListView lv=(ListView) findViewById(R.id.listView); 
     if(lv != null) { 
      List<String> lvs = new ArrayList<String>(Arrays.asList(noob)); 
      // lvs is not null and it is filled with the values from the  array. 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  R.layout.activity_main, lvs); 
      if(adapter != null) 
      { 
       lv.setAdapter(adapter); 
       adapter.notifyDataSetChanged(); 
      } 
     } 

    } 
} 

Düzen:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.greencountrytechnical.listviewtest.MainActivity"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/button" /> 

    <Button 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

cevap

0

senin sorunun muhtemelen buradan kaynaklanmaktadır;

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  R.layout.activity_main, lvs); 

Ya oluşturarak kendi list_item_layout bu sorunu veya varsayılan olarak size verir ne android kullanabilirsiniz:

ArrayAdapter<String> adapter = 
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lvs); 

umarım bu yardımcı olur!

+0

Teşekkürler. Android önekini özledim. İşe yarıyor. Cevabı kabul etmeden önce 5 dakika beklemem lazım. – zx5000

+0

Lütfen android.R.layout.simple_list_item_1 adresini yerleştirdiğinizden ve projenizi temizlediğinizden emin olun. Mevcut. Tekrar çalışmıyorsa, projenizi yeniden inşa edin – Eenvincible

+0

Çalıştığına sevindim! – Eenvincible