2016-01-09 4 views
3

Я хочу использовать ListView с пользовательским адаптером простирающегося BaseAdapterадаптера расширения baseadapter GetView имеет положение = 0

public class PowerAdapter extends BaseAdapter { 
List<Power> mPowerList; 

public PowerAdapter(List<Power> powers) { 
    mPowerList = powers; 
} 

public void bind(ViewHolder holder, int position) { 
    Power power = mPowerList.get(position); 
    Context context = holder.mContext; 
    holder.mPowerName.setText(power.getName()); 
    holder.mPowerLevel.setText(context.getString(R.string.power_level, power.getMinLevel())); 
    holder.mPowerCost.setText(context.getString(R.string.power_cost, power.getCost())); 
    holder.mPowerDuration.setText(context.getString(R.string.power_duration, power.getDuration())); 
    holder.mPowerCooldown.setText(context.getString(R.string.power_cooldown, power.getCoolDown())); 
} 

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

@Override 
public Object getItem(int position) { 
    return mPowerList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder; 
    if(convertView == null) { 
     convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_power, parent, false); 
     viewHolder = new ViewHolder(convertView); 
     convertView.setTag(viewHolder); 
    } 
    else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    bind(viewHolder, position); 
    return convertView; 
} 


public static class ViewHolder { 
    @Bind(R.id.power_name) TextView mPowerName; 
    @Bind(R.id.power_level) TextView mPowerLevel; 
    @Bind(R.id.power_cost) TextView mPowerCost; 
    @Bind(R.id.power_duration) TextView mPowerDuration; 
    @Bind(R.id.power_cooldown) TextView mPowerCooldown; 
    Context mContext; 

    public ViewHolder(View itemView) { 
     ButterKnife.bind(this, itemView); 
     mContext = itemView.getContext(); 
    } 
}} 

в GetView (...) позиция пар всегда 0 (у меня есть 3 пункта) и Я не могу понять, почему вообще. Я видел пару нитей о других людях, имеющих одну и ту же проблему, но они не помогли мне исправить это. Любая идея? (PS: Я не хочу использовать RecyclerView в этом случае.)

EDIT

Log.d("SIZE", Integer.toString(section.getPowerList().size())); // return 3 
holder.mCharacteristics.setAdapter(new PowerAdapter(section.getPowerList())); 

и макет: Активность:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/white"> 

<include layout="@layout/widget_toolbar"/> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/hero_model" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /></LinearLayout> 

и расположение каждый Перерабатывающий элемент:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
<TextView 
    android:id="@+id/section_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:textStyle="bold" 
    android:textSize="16dp" /> 

<ListView 
    android:id="@+id/charac_listview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/></LinearLayout> 

EDIT 2 Okey, это не работает, потому что мой ListView имеет размер «wrap_content», если я исправлю размер с «200dp», например, он работает. Но я хочу динамический размер. Кто-нибудь знает, как это исправить ?

+0

Вы уверены, что у вас есть 3 пунктов в списке? вы отлаживали это? вы можете поделиться своим кодом активности, в котором вы получаете 3 элемента в списке и устанавливаете их на свой адаптер. –

+0

Я отлаживал это, но я положу код – Magnas

+0

Опубликуйте свой макет. –

ответ

3

Я думаю, что вы не должны использовать Listview внутри RecyclerView. Вы не можете использовать wrap_content для ListView (он будет уменьшаться до 0 высоты). Так что давайте использовать StickyRecyclerView или что-то в этом роде. Пожалуйста, обратитесь к этому примеру

https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c

+0

Спасибо, с этим и http://stackoverflow.com/a/29394173/3595639 Мне удалось исправить проблему! – Magnas

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