2013-02-26 2 views
1

스크립트가 작동하지 않습니다. 내 목표는 일부 클릭 가능한 항목으로 목록보기를 만드는 것입니다. 하지만 앱이 계속 충돌합니다. 이 문제를 해결하는 방법? 어댑터를 올바르게 사용하고 있습니까?내 listview가 작동하지 않습니다.

제목, 부제 및 이미지를 목록보기의 항목으로 사용하고 있습니다.

package com.example.whs; 

import java.util.ArrayList; 
import java.util.HashMap; 

import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class MenuAdapter extends BaseAdapter{ 
    // Define variables 
    ArrayList<HashMap<String, String>> data; 
    Activity activity; 
    private static LayoutInflater inflater=null; 

    public MenuAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
     activity = a; 
     data = d; 
    } 

    @Override 
    public int getCount() { 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     if(convertView==null) 
      vi = inflater.inflate(R.layout.list_row, null); 

     TextView title = (TextView)vi.findViewById(R.id.title); // title 
     TextView subtitle = (TextView)vi.findViewById(R.id.subtitle); // subtitle 

    HashMap<String, String> item = new HashMap<String, String>(); 
     item = data.get(position); 

     // Setting all values in listview 
     title.setText(item.get(Index.TITLE)); 
     subtitle.setText(item.get(Index.SUBTITLE)); 
     return vi; 
    } 

} 

이 내 인덱스 클래스입니다 :

package com.example.whs; 

import java.util.ArrayList; 
import java.util.HashMap; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.ListView; 

public class Index extends Activity { 

    public static final Object TITLE = "title"; 
    public static final Object SUBTITLE = "subtitle"; 
    public static final Object THUMBNAIL = "thumbnail"; 

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

     buildMenu(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.index, menu); 
     return true; 
    } 

    //Builds the menu for listview 
    public void buildMenu(){ 
     ArrayList<HashMap<String, String>> menu = new ArrayList<HashMap<String, String>>(); 
     //Arrays for info 
     String[] menuTitleArray = {"Gallerij"}; 
     String[] menuSubtitleArray = {"Bekijk foto's en geef reacties"}; 
     String[] menuThumbnailArray = {"gallery"}; 
     for(int i=0; i < menuTitleArray.length; i++){ 
      HashMap<String, String> item = new HashMap<String, String>(); 
      item.put((String) TITLE, menuTitleArray[i]); 
      item.put((String) SUBTITLE, menuSubtitleArray[i]); 
      item.put((String) THUMBNAIL, menuThumbnailArray[i]); 
      menu.add(item); 
     } 
     MenuAdapter adapter = new MenuAdapter(this, menu); 
     ListView list = (ListView)findViewById(R.id.list); 
     list.setAdapter(adapter); 
    } 
} 

로그 파일 : http://pastebin.com/kzeVMLuk

+1

스택 추적을 게시하면 도움이 될 것입니다. – invertigo

답변

1

하나의 문제 : 그것은 당신의 코드에서

private static LayoutInflater inflater=null,

을 인스턴스화되지 않습니다 :

당신의 생성자에서 5,

가 할 : 당신이 볼 수 있듯이

private LayoutInflater inflater=null; 
public MenuAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
    activity = a; 
    data = d; 
    inflater = LayoutInflater.from (a); 
} 

, 나는 또한 static 수정을했다. 컨텍스트와 관련된 것에 대해서는 static 수정 자에 대해 조언합니다. 특히 액티비티에 바인딩되어 있기 때문입니다.

+0

내 로그 파일은 http://pastebin.com/kzeVMLuk입니다. –

+0

'RelativeView'가 사용자 정의 클래스로 존재하지 않고 'RelativeLayout'을 원했을 가능성이 있습니다. 어느 쪽이든,'list_row.xml' 게시 –

+0

감사합니다, 어리석은 실수 ... 그것은 예스! –

0

.put을 사용한 후 문자열을 삽입했습니다. 클릭 할 수있게하려면 onItemClickListener을 사용해보세요. 도움이 될거야.

관련 문제