2014-01-10 34 views
0

我有一个自定义列表适配器填充列表视图。 我想让列表视图中的每个项目都是可点击的。点击后,我希望应用加载其他活动并使用适当的数据填充它。数据来自于listing.java的java列表。列表视图单元格不可点击

我似乎无法得到它的回应点击,这里是我到目前为止已经试过:

//this is in the onCreate method 
    final ListView listview = (ListView) findViewById(R.id.listview); 
    listingsAdapter = new ListingsAdapter(this, mylistings); 
    listview.setAdapter(listingsAdapter); 

这是我第一次尝试(这只是为了获得敬酒的工作,但它没有工作)

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, final View view,int position, long id) { 
     Toast.makeText(getApplicationContext(), 
     "Click ListItem Number " + position, Toast.LENGTH_LONG).show(); 
     }; 
    }); 

我也试过这样:

listview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      Intent i = new Intent(HomeScreenActivity.this, DetailedViewActivity.class); 
      startActivity(i); 
     }; 
    }); 

帮助,将不胜感激。让我知道如果我应该发布我的适配器!

这里是适配器:

public class ListingsAdapter extends BaseAdapter{ 

    List<Listing> listings; 
    Context context; 
    LayoutInflater inflater; 

    public ListingsAdapter(Context context, List<Listing> listings){ 
     this.context = context; 
     this.listings = listings; 
     inflater = (LayoutInflater) context.getSystemService 
       (Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public boolean isEnabled(int position) 
    { 
     return true; 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     View _localView = convertView; 
     if (_localView == null){ 
      _localView = inflater.inflate(R.layout.main_cell, parent, false); 
     } 
     TextView text1 = (TextView) _localView.findViewById(R.id.firstline); 
     TextView text2 = (TextView) _localView.findViewById(R.id.secondLine);; 
     Listing listing = listings.get(position); 
     text1.setText(listing.getTitle()); 
     text2.setText(listing.getAddress()); 
     return _localView; 
    } 



    @Override 
    public int getCount(){ 
     // TODO Auto-generated method stub 
     return listings.size(); 
    } 

    @Override 
    public Object getItem(int arg0){ 
     return listings.get(arg0); 
    } 

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

这是main_cell.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="?android:attr/listPreferredItemHeight" 
android:padding="6dp" 
android:background="#CC7C43" 
android:clickable="true" 
android:focusable="true" 
android:focusableInTouchMode="true"> 

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginRight="6dip" 
    android:contentDescription="TODO" 
    android:src="@drawable/ic_launcher" /> 

<TextView 
    android:id="@+id/secondLine" 
    android:layout_width="fill_parent" 
    android:layout_height="26dip" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_toRightOf="@id/icon" 
    android:ellipsize="marquee" 
    android:singleLine="true" 
    android:text="Description" 
    android:textSize="12sp" /> 

<TextView 
    android:id="@+id/firstline" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/secondLine" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignWithParentIfMissing="true" 
    android:layout_toRightOf="@id/icon" 
    android:gravity="center_vertical" 
    android:text="Example application" 
    android:textSize="16sp"/> 

</RelativeLayout> 

回答

0

对,所以我患了严重的后遗症中恢复,我只是记得我答应阐述在我发布的链接上 - 无视链接!

应该将下面的代码添加到您的ListingsAdapter:

@Override 
public boolean isEnabled(int position) 
{ 
    return true; 
} 

而且你应该在你的main_cell.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dp" 
    android:background="#CC7C43" 
    android:longClickable="true"> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dp" 
    android:background="#CC7C43"> 

该作品编辑RelativeLayout ,我已经测试过了。

+0

非常感谢哈哈,让我看看我能做些什么 – user2886057

+0

sooo你想说明一下吗? :p – user2886057

+0

是啊对不起,我完全忘了:-)我编辑了我的回答 –

0

尝试初始化本地实例视野:

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 
    View _localView = convertView; 
    if (_localView == null){ 
     _localView = inflater.inflate(R.layout.main_cell, parent, false); 
    } 
    TextView text1 = (TextView) _localView.findViewById(R.id.firstline); 
    TextView text2 = (TextView) _localView.findViewById(R.id.secondLine);; 
    Listing listing = listings.get(position); 
    text1.setText(listing.getTitle()); 
    text2.setText(listing.getAddress()); 
    return _localView; 
} 

UPD: 还可以修改您的适配器类等必要的方法,因为你需要获得一个项目的ID点击在onItemClick方法使用它:

@Override 
public Object getItem(int arg0){ 
    // TODO Auto-generated method stub 
    listings.get(arg0); 
} 

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

作为一个例子。希望这会帮助你。

+0

我会在活动或创建方法中执行此操作吗? – user2886057

+0

@ user2886057在您的“ListingsAdapter”类中。只需创建一个本地对象并处理它,而不是方法的参数。 – infm

+0

不幸的是,这并没有解决它 – user2886057

相关问题