2013-11-07 4 views
-1

в App im development, я получил список сообщений с титулными данными и т. Д. При нажатии на Messagetitel я хочу раздвинуть эту запись и показать Детали, а также некоторые новые кнопки типа " «ответ», «удалить» и «переслать».Listview со слайдом расширяемого подробного представления

нравится:
- сообщение
- сообщение (щелкнул сообщение)
детали кнопки удалить, вперед, ответ
текст
- сообщение
- сообщение

Вот что я сделал до сих пор:

первый мой класс моделей для сообщений:

public class MyMessage { 

private String from; 
private String subject; 
private String date; 
private String message; 

public MyMessage(String f, String s, String d, String m){ 
    from= f; 
    subject= s; 
    date = d; 
    message= m; 
} 

public String getFrom() { 
    return from; 
} 

public String getSubject() { 
    return subject; 
} 

public String getDate() { 
    return date; 
} 

public String getMessage() { 
    return message; 
} 

}

мой заказ адаптер:

public class NewAdapter extends BaseExpandableListAdapter { 

public ArrayList<MyMessage> mMessage; 
public LayoutInflater minflater; 
public Activity activity; 

public NewAdapter(ArrayList<MyMessage> message){ 
    mMessage = message; 
} 

public void setInflater(LayoutInflater mInflater, Activity act) { 
     this.minflater = mInflater; 
     activity = act; 
    } 

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getChildView(int groupPosition, int childPosition, 
     boolean isLastChild, View convertView, ViewGroup parent) { 

    TextView text = null; 
    // TODO Auto-generated method stub 
    if (convertView == null) { 
      convertView = minflater.inflate(R.layout.message_details, null); 
      } 
    text = (TextView) convertView.findViewById(R.id.tv_message_text); 
    text.setText(mMessage.get(childPosition).getMessage()); 
    return convertView; 
} 

@Override 
public int getChildrenCount(int groupPosition) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public Object getGroup(int groupPosition) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int getGroupCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public long getGroupId(int groupPosition) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 
    TextView from= null; 
    TextView date = null; 
    TextView subject= null; 
    // TODO Auto-generated method stub 

    if(convertView == null){ 
     convertView = minflater.inflate(R.layout.message_head, null); 
    } 
    from= (TextView) convertView.findViewById(R.id.tv_from); 
    date = (TextView) convertView.findViewById(R.id.tv_date); 
    subject= (TextView) convertView.findViewById(R.id.tv_subject); 

    from.setText(mMessage.get(groupPosition).getfrom()); 
    date.setText(mMessage.get(groupPosition).getDate()); 
    subject.setText(mMessage.get(groupPosition).getSubject()); 


    return convertView; 
} 

@Override 
public boolean hasStableIds() { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public boolean isChildSelectable(int groupPosition, int childPosition) { 
    // TODO Auto-generated method stub 
    return false; 
} 

}

мой основной класс:

public class Test extends ExpandableListActivity{ 

public ArrayList<MyMessage> message; 
public ExpandableListView eListView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    eListView = getExpandableListView(); 

    message = createMessages(); 
    NewAdapter nAdapter = new NewAdapter(message); 
    nAdapter 
    .setInflater(
     (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), 
     this); 
    getExpandableListView().setAdapter(nAdapter); 

} 

private ArrayList<MyMessage> createMessages() { 

    ArrayList<MyMessage> m = new ArrayList<MyMessage>(); 
    MyMessage test1 = new MyMessage("test1", "testbetreff", "08.11.2013/09:44", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so"); 
    MyMessage test2 = new MyMessage("test2", "testbetreff", "08.11.2013/09:45", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so"); 
    MyMessage test3 = new MyMessage("test3", "testbetreff", "08.11.2013/09:46", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so"); 
    MyMessage test4 = new MyMessage("test4", "testbetreff", "08.11.2013/09:47", "gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text und so"); 

    m.add(test1); 
    m.add(test2); 
    m.add(test3); 
    m.add(test4); 

    return m; 

} 

}

я не получаю какие-либо ошибки, но моя деятельность пусто. Я попытался отладить это, но он никогда не вызывает getchildview() или getgroupview(), и я не знаю почему.

Я делаю какие-либо большие ошибки с адаптером costum? заранее спасибо

+0

Определяя пользовательский адаптер для вспенивающегося ListView, вы можете включить любого просмотров в режиме просмотра детей. Попробуйте сами и покажите нам свой код. –

+0

все в порядке, я добавил свой код до сих пор –

ответ

0
@Override 
    public int getChildrenCount(int groupPosition) { 
     return 1; //just one children? 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     return mMessage.get(groupPosition); 
    } 

    @Override 
    public int getGroupCount() { 
     return mMessage.size(); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     return groupPosition; 
    } 

Попробуйте это ... может быть, это не называется, потому что вы сказали, что адаптер не имеют элементов на все ...

+0

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

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