0

나는 a를 만들려고했다. 목록보기. 하지만 작동하지 않습니다. 주 활동에서이 버튼을 클릭하면 추락했습니다.내 안드로이드의 ListView

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Coming Soon: Expansion View" 
    android:onClick="exp" 
    /> 

여기에는 주요 활동 JAVA 코드가 나와 있습니다. 그것이 내가 개발하고있는 게임에 대한 간단한 메인 메뉴 항목입니다. 이것은 광기입니다.

package com.apw.games.rpg.medieval; 

import android.app.*; 
import android.os.*; 
import android.view.*; 
import android.widget.*; 
import android.content.*; 
import android.util.*; 
import android.graphics.*; 

public class MainActivity extends Activity 
{ 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    AlertDialog alertDialog = new 
    AlertDialog.Builder(MainActivity.this).create(); 
    alertDialog.setTitle("Medieval: The Video Game"); 
    alertDialog.setMessage("All Games Begin. Season One of the Game, Version 1. First Expansion coming soon- Life of Darkness."); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 

//here you can add functions 

      } }); 
    alertDialog.setIcon(R.drawable.medieval_background); 
    alertDialog.show(); 
} 



@Override 
public void exp(View v) { 
    Intent 
     intt = new Intent(this, Expansions.class); 
    startActivity(intt); 
} 


@Override 
public void onNothingSelected(AdapterView<?> parent) { 

} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
MenuInflater inflater = getMenuInflater(); 
inflater.inflate(R.menu.menu, menu); return true; } 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
// Handle item selection 
switch (item.getItemId()) { 


    case R.id.quit: 
    Intent intent = new Intent(this, Exit.class); 
    startActivity(intent); 
    return true; 
    case R.id.new_game: 
     Intent i = new Intent(this, New_Game.class); 
     startActivity(i); 
     return true; 
    case R.id.visit_site: 
     Intent inte = new Intent(this, Site.class); 
     startActivity(inte); 
     return true; 
    case R.id.apw_site: 
     Intent inten = new Intent(this, APWSite.class); 
     startActivity(inten); 
     return true; 

    default: return super.onOptionsItemSelected(item); 

    }}} 

여기는 목록보기의 레이아웃 항목입니다. 또한,이 모든 것은 StackOverflow에있는 누군가로부터받은 튜토리얼에서 비롯된 것입니다. 이 첫 번째 파일은 simplerow.xml이라고합니다.

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/rowTextView" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:padding="10dp" 
android:textSize="16sp" > 
</TextView> 

여기에 다른 하나는 expansions.xml입니다. 이 "R.layout"파일을 통해 사용되는 Java 코드는 뒤이어 게시됩니다.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
<ListView 
android:id="@+id/list_view" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
</ListView> 
</LinearLayout> 

지금 여기에 추가, 내가 있기 때문에 무슨 일이 일어나고 있는지 잘 모르겠어요은 "그랜드 슬램"자바 파일, 난 그냥 알다시피, 모든 안드로이드에서이 일을하고 있습니다. 내 AIDE는 아무런 오류가 없다고 말했지만 앱을 시작하고 Main Activity의 버튼을 클릭하면 충돌이 발생합니다. 나는 그것이 onClick 문제인지 또는 이것 저것인지 확실하지 않았습니다.

package com.apw.games.rpg.medieval; 

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

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import com.apw.games.rpg.medieval.*; 

public class Expansions extends Activity { 

    private ListView mainListView ; 
    private ArrayAdapter<String> listAdapter ; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.expansions); 

    // Find the ListView resource. 
    mainListView = (ListView) findViewById(R.id.list_view); 

    // Create and populate a List of planet names. 
    String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars", 
            "Jupiter", "Saturn", "Uranus", "Neptune"}; 
    ArrayList<String> planetList = new ArrayList<String>(); 
    planetList.addAll(Arrays.asList(planets)); 


    listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList); 

    // Add more planets. If you passed a String[] instead of a List<String> 
    // into the ArrayAdapter constructor, you must not add more items. 
    // Otherwise an exception will occur. 
    listAdapter.add("Ceres"); 
    listAdapter.add("Pluto"); 
    listAdapter.add("Haumea"); 
    listAdapter.add("Makemake"); 
    listAdapter.add("Eris"); 

    mainListView.setAdapter(listAdapter);  
    } 
} 

가능한 경우 내 오류가 어디에서 있었는지 알려주고 수정 해주세요. XML 레이아웃에 대한

+0

매니페스트에 '확장 활동'을 등록하셨습니까? –

+0

@Vishal Vyas 네, 비록 thnxs 4 cking을했지만 – apw2012

+0

나는 그것을 선언했음을 확신합니다. – apw2012

답변

0

사용이 :

 <ListView android:id="@+id/ListView1" android:layout_width="fill_parent" 
     android:layout_height="wrap content" /> 

하는 코드를 다음

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList); 

당신은 어떤 레이아웃을 사용하려면 어댑터를 말하고있다 :

 public static String selected = ""; 
     private static final String[] RATINGS = new String[] { 
    "1","2","3","4","5" 
}; 

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

      list.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_single_choice, RATINGS)); 
    list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 

      selected = RATINGS[arg2];    
     } 
    }); 
0

나는이 문제라고 생각합니다 레이아웃에 어떤 요소가 데이터를 매핑 할 것인지는 알 수 없습니다. 사용자 정의 TextView 이름을 사용 중이므로 어댑터에 알려야합니다.

사용하려고하는 생성자를 사용하면 어댑터가 text1의 기본 TextView ID를 찾습니다.

그래서, 선택의 여지가 있습니다. 리소스 파일과 TextView ID를 모두 제공하는 다른 생성자를 사용할 수 있습니다. 당신이 text1에 텍스트 뷰의 ID를 변경하고 그대로 어댑터에 전화를 남길 수 있습니다,

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, R.id.rowTextView, planetList); 

을 또는 : 당신이 할 경우

, 그것은 다음과 비슷한 모습이 될 것입니다.

어댑터를 호출하는 데 사용할 수있는 다양한 생성자 목록은 ArrayAdapter docs을 참조하십시오.

관련 문제