2013-03-17 44 views
0

我尝试列表视图,但是当我点击一个元素我没有我的烤onListItemClick上的活动扩展ListActivity

public class MarkersListActivity extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     String[] titles = new String[] {"Titre 1", "Titre 2", "Titre 3", "Titre 4"}; 
     String[] des = new String[] {"des 1", "des 2", "des 3", "des 4"}; 

     setListAdapter(new MarkerListArrayAdapter(this, titles, des)); 

} 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 

    //get selected items 
    String selectedValue = (String) getListAdapter().getItem(position); 
    Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show(); 

    } 

} 

MarkerListArrayAdapter

public class MarkerListArrayAdapter extends ArrayAdapter<String> { 
private final Context context; 
private final String[] titleText; 
private final String[] descriptionText; 

public MarkerListArrayAdapter(Context context, String[] titles, String[] description) { 
    super(context, R.layout.marker_list_layout, titles); 
    this.context = context; 
    this.titleText = titles; 
    this.descriptionText = description; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(R.layout.marker_list_layout, parent, false); 
    TextView title = (TextView) rowView.findViewById(R.id.title); 
    TextView description = (TextView) rowView.findViewById(R.id.description); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.image); 

    title.setText(titleText[position]); 
    description.setText(descriptionText[position]); 

    imageView.setBackgroundColor(Color.argb(255,255,0,0)); 

    return rowView; 
} 
} 

的XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="20dp" 
    android:layout_marginTop="5dp" 
    android:src="@drawable/transparent" > 
</ImageView> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@+id/label" 
     android:textSize="30sp" > 
    </TextView> 

    <TextView 
     android:id="@+id/description" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@+id/label" 
     android:textSize="15sp" /> 

</LinearLayout> 

</LinearLayout> 

感谢

+0

你能发布你的列表项目布局文件吗? – 2013-03-17 13:14:51

+0

我更新了所有代码 – Ajouve 2013-03-17 13:26:06

+1

的帖子尝试将根LinearLayou的'layout_width'设置为'fill_parent' – 2013-03-17 13:33:11

回答

0

你应该se:

public void onItemClick(AdapterView<?> parent, View v, int position, long id) 

方法代替。

让你Activityimplements AdapterView.OnItemClickListener

,然后在onCreate添加此命令:

list.setOnItemClickListener(this); 
0

您还没有叫onListItemClick()超级 ... 如下操作:

protected void onListItemClick(ListView l, View v, int position, long id){ 
    super.onListItemClick(l, v, position, id); 
} 
+1

这是没有必要的。 'onListItemClick'默认为空。 – 2013-03-17 13:19:10

+0

我总是有同样的问题添加超级 – Ajouve 2013-03-17 13:27:03

0

你必须设置setContentView(R.layout.activity_ma在MarkersListActivity类)方法和你的ListView ID应该是 “@android:ID /列表”

添加此布局activity_main

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp"> 

<ListView android:id="@android:id/list" //Important this one. 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#00FF00" 
      android:layout_weight="1" 
      android:drawSelectorOnTop="false"/> 

</LinearLayout> 

看一看官方文档listactivity https://developer.android.com/reference/android/app/ListActivity.html

相关问题