嗨,我想做下拉列表视图下拉详细视图。例如见这个Image 1。当我们点击任何列表视图时,它会显示详细视图(相对于列表视图),如Image 2。此详细视图不像可扩展列表视图或微调器。请帮我做这个Android:下拉列表视图详细视图(不是微调器或不可扩展列表视图)
1
A
回答
2
请结帐这个github上,我只是设置https://github.com/lt-tibs1984/ExpandableListView
的想法是隐藏和使用的知名度显示视图,这里是表示点一些代码:
首先设置你的项目类或任何对象,你要使用(简单的POJO实现Parcelable)
public class Item implements Parcelable{
public String title;
public String description;
public boolean isExpanded;
public Item(){}
public Item(Parcel in){
title = in.readString();
description = in.readString();
isExpanded = in.readInt() == 1;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeString(description);
dest.writeInt(isExpanded ? 1 : 0);
}
public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>(){
@Override
public Item createFromParcel(Parcel source) {
return new Item(source);
}
@Override
public Item[] newArray(int size) {
return new Item[size];
}
};
}
然后创建您的适配器:
public class ExpandableAdapter extends BaseAdapter{
List<Item> items;
Context context;
public class Row{
AppCompatTextView mTvTitle;
AppCompatTextView mTvDescription;
FrameLayout mFlWrapper;
ImageView mIvArrow;
}
public ExpandableAdapter(Context context, List<Item> items){
this.items = items;
this.context = context;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Row theRow;
if(convertView == null){
theRow = new Row();
convertView = LayoutInflater.from(context).inflate(R.layout.row_item, parent, false);
theRow.mFlWrapper = (FrameLayout) convertView.findViewById(R.id.fl_wrapper);
theRow.mTvTitle = (AppCompatTextView) convertView.findViewById(R.id.tv_title);
theRow.mTvDescription = (AppCompatTextView) convertView.findViewById(R.id.tv_description);
theRow.mIvArrow = (ImageView) convertView.findViewById(R.id.iv_arrow);
convertView.setTag(theRow);
}else{
theRow = (Row) convertView.getTag();
}
// Update the View
Item item = items.get(position);
if(item.isExpanded){
theRow.mFlWrapper.setVisibility(View.VISIBLE);
theRow.mIvArrow.setRotation(180f);
}else{
theRow.mFlWrapper.setVisibility(View.GONE);
theRow.mIvArrow.setRotation(0f);
}
theRow.mTvTitle.setText(item.title);
theRow.mTvDescription.setText(item.description);
// return the view
return convertView;
}
}
在活动
最后:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lvItems = (ListView) findViewById(R.id.lv_items);
ExpandableAdapter adapter = getAdapter();
lvItems.setAdapter(adapter);
lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ExpandableAdapter adapter = (ExpandableAdapter) parent.getAdapter();
Item item = (Item) adapter.getItem(position);
if(item != null){
if(item.isExpanded){
item.isExpanded = false;
}else{
item.isExpanded = true;
}
}
adapter.notifyDataSetChanged();
}
});
}
private ExpandableAdapter getAdapter(){
List<Item> items = new ArrayList<>();
for(int i = 0; i < 50; i++){
Item item = new Item();
item.title = "Title Item " + i;
item.description = "Description for Title Item "+ i;
item.isExpanded = false;
items.add(item);
}
return new ExpandableAdapter(this, items);
}
}
0
特别感谢“inner_class7”:根据“inner_class7”我得到了答案,但通过他的代码,我必须达到两个要求
要求1:当我们点击说明展开视图正在关闭,但我不想关闭视图
要求2:我想cl创建Global.java
:OSE前一视图(如果存在的话)延伸的新的视图时要根据下面的步骤
步骤1实现上述两个要求,更新“inner_class7”代码
public class Global { public static Item itemGlobal; }
步骤2:更新MainActivity.java
import static com.app.listviewdrop.Global.itemGlobal;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_drop);
ListView lvItems = (ListView) findViewById(R.id.lv_items);
ExpandableAdapter adapter = getAdapter();
lvItems.setAdapter(adapter);
lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ExpandableAdapter adapter = (ExpandableAdapter) parent.getAdapter();
Item item = (Item) adapter.getItem(position);
if(item != null){
if(item.isExpanded){
item.isExpanded = false;
}else{
item.isExpanded = true;
itemGlobal = (Item)adapter.getItem(position);
}
}
adapter.notifyDataSetChanged();
}
});
}
private ExpandableAdapter getAdapter(){
List<Item> items = new ArrayList<Item>();
for(int i = 0; i < 50; i++){
Item item = new Item();
item.title = "Title Item " + i;
item.description = "Description for Title Item "+ i;
item.isExpanded = false;
items.add(item);
}
return new ExpandableAdapter(this, items);
}
}
第三步:更新ExpandableAdapter.java
import static com.YOUR PACKAGE NAME.itemGlobal;
public class ExpandableAdapter extends BaseAdapter {
List<Item> items;
Context context;
// List<Item> list = new ArrayList<Item>();
public class Row {
AppCompatTextView mTvTitle;
AppCompatTextView mTvDescription;
FrameLayout mFlWrapper;
ImageView mIvArrow;
}
public ExpandableAdapter(Context context, List<Item> items) {
this.items = items;
this.context = context;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Row theRow;
if (convertView == null) {
theRow = new Row();
convertView = LayoutInflater.from(context).inflate(R.layout.row_item, parent, false);
theRow.mFlWrapper = (FrameLayout) convertView.findViewById(R.id.fl_wrapper);
theRow.mTvTitle = (AppCompatTextView) convertView.findViewById(R.id.tv_title);
theRow.mTvDescription = (AppCompatTextView) convertView.findViewById(R.id.tv_description);
theRow.mIvArrow = (ImageView) convertView.findViewById(R.id.iv_arrow);
convertView.setTag(theRow);
theRow.mFlWrapper.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
} else {
theRow = (Row) convertView.getTag();
}
// Update the View
Item item = items.get(position);
if (item.isExpanded) {
if(item == itemGlobal){
theRow.mFlWrapper.setVisibility(View.VISIBLE);
theRow.mIvArrow.setRotation(180f);
}else {
theRow.mFlWrapper.setVisibility(View.GONE);
theRow.mIvArrow.setRotation(0f);
item.isExpanded = false;
}
} else {
theRow.mFlWrapper.setVisibility(View.GONE);
theRow.mIvArrow.setRotation(0f);
}
theRow.mTvTitle.setText(item.title);
theRow.mTvDescription.setText(item.description);
// return the view
return convertView;
}
}
我实现这些要求只是 “inner_class7” 的帮助。许多很多感谢“inner_class7”
相关问题
- 1. Android微调器 - 展开列表视图
- 2. 可扩展列表视图中的不同子视图android
- 3. 可扩展列表视图
- 4. 表视图不显示详细视图
- 5. 可扩展列表视图不显示
- 6. Android可扩展列表视图
- 7. Android中的可扩展列表视图
- 8. Android可扩展列表视图 - 网页
- 9. Android的可扩展列表视图
- 10. Android:可扩展列表视图实现
- 11. Android 2级可扩展列表视图
- 12. 可扩展的列表视图android json
- 13. Android可扩展列表视图片段
- 14. Android可扩展列表视图
- 15. Android可扩展列表视图
- 16. 可扩展列表视图android
- 17. 可扩展列表视图滚动到列表视图中
- 18. 改变列表视图(可扩展列表视图)的backgroundColor
- 19. 列表视图详细视图不显示任何东西
- 20. 多视图(图标,详细,列表等)
- 21. 可扩展列表视图android中的树视图
- 22. Android的列表视图到另一个详细信息视图
- 23. 微调列表视图
- 24. 扩展列表视图
- 25. 扩展列表视图
- 26. 详细信息视图控件中的多列下拉列表
- 27. 扩展列表视图不起作用
- 28. 在列表视图(详细视图)上排序图标c#
- 29. 从表视图到详细视图推
- 30. 与Android中的微调列表视图
这是非常容易实现的消耗性列表视图,那么为什么你不想'消耗性列表视图'? – Satyavrat