2014-01-10 5 views
0

У меня есть пользовательский список, который заполняет список. Я пытаюсь получить каждый элемент в списке, который можно щелкнуть. Когда вы нажимаете, я хочу, чтобы приложение загрузило другое действие и заполнило его соответствующими данными. Данные поступают из java-списка listing.java.Ячейки Listview не меняются

я не могу заставить его реагировать на щелчки, вот что я пытался до сих пор:

//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; 
} 

И вы должны отредактировать RelativeLayout в вашем 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"> 

это работает , Я протестировал его.

+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: изменения также другие необходимые методы в классе адаптера, потому что вам нужно, чтобы получить идентификатор элемента щелкнул для его использования в методе 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 в вашем классе «ListingAdapter». Просто создайте локальный объект и обработайте его вместо аргумента метода. – infm

+0

К сожалению, это не исправило его. – user2886057

Смежные вопросы