- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个可扩展的 ListView,其中每个父 View 都有一个 subview 。在 subview 中,我有一个子子元素:EditText、TextView 和 RadioButton。
子元素在单选按钮上的点击值和输入后的编辑文本值不同
CategoryActivity.java
package com.restaurant.app;
public class CategoryActivity extends Activity implements OnClickListener {
public static final String TAG_TITLE = "title";
public static final String TAG_PRICE="price";
private static final String TAG_CATEGORY="category";
private static final String TAG_DETAIL="detail";
private static final String TAG_MENU="menu";
private static final String TAG_ID="id";
private static final String TAG_NOME="nome";
private static final String TAG_HOTELID="hotel_id";
private static final String TAG_DESCRIPTION="description";
private static final String TAG_SERVICES="services";
private static final String TAG_URLID="urlid";
private static final String TAG_RESTAURANTID="restaurant_id";
private static final String TAG_USERID="user_id";
private static final String TAG_OFFERTA="offerta";
private static final String TAG_PREZZO="prezzo";
ArrayList<String> resultparent = new ArrayList<String>();
ArrayList<Object> resultchild = new ArrayList<Object>();
ArrayList<HashMap<String,String>> child = new ArrayList<HashMap<String,String>>();
// for childlist item
ArrayList<ArrayList<HashMap<String, String>>> childlist = new ArrayList<ArrayList<HashMap<String,String>>>();
ImageView imagehome;
ImageView imagemenu;
ImageView imagebooking;
ImageView imageordernow;
ExpandableListView expandablelistview;
CategoryList categoryadapter;
SimpleExpandableListAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.booking);
imagehome=(ImageView)findViewById(R.id.imagehome);
imagehome.setOnClickListener(this);
imagemenu=(ImageView)findViewById(R.id.imagemenu);
imagemenu.setOnClickListener(this);
imageordernow=(ImageView)findViewById(R.id.imageordernow);
imageordernow.setOnClickListener(this);
expandablelistview = (ExpandableListView)findViewById(R.id.expandablelistview);
new CategoryAsynctask().execute("");
}
public class CategoryAsynctask extends AsyncTask<String,String,ArrayList<String>>
{
@Override
protected ArrayList<String> doInBackground(String... arg0)
{
JsonParser jparser = new JsonParser();
String url="http://cssthemeclub.com/demo/saffron/webservices/categorymenu.php?restid=5";
String data=jparser.getJSONFromUrl(url);
try
{
JSONObject jobject=new JSONObject(data);
JSONArray jcategory=jobject.getJSONArray(TAG_CATEGORY);
Log.e("Category length","--->"+jcategory.length());
for (int i=0;i<jcategory.length();i++)
{
JSONObject jdetail=jcategory.getJSONObject(i).getJSONObject(TAG_DETAIL);
String categoryid=jdetail.get(TAG_ID).toString();
String nome=jdetail.get(TAG_NOME).toString();
String restaurantid=jdetail.get(TAG_RESTAURANTID).toString();
resultparent.add(nome);
JSONArray jmenu = new JSONArray();
jmenu=null;
jmenu=jcategory.getJSONObject(i).getJSONArray(TAG_MENU);
//Log.e("Jmenu","--->"+jmenu);
child=new ArrayList<HashMap<String,String>>();
child.clear();
for(int j=0;j<jmenu.length();j++)
{
String menuid=jmenu.getJSONObject(j).getString(TAG_ID).toString();
String offer=jmenu.getJSONObject(j).getString(TAG_OFFERTA).toString();
String price=jmenu.getJSONObject(j).getString(TAG_PREZZO).toString();
//Log.e("menu","--->"+offer);
//Log.e("price","-->"+price);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_MENU,menuid);
map.put(TAG_PREZZO,price);
map.put(TAG_OFFERTA,offer);
map.put(TAG_RESTAURANTID,restaurantid);
child.add(map);
childlist.add(child);
}
resultchild.add(child);
}
Log.e("Result Child","--->"+resultchild);
}
catch (Exception e)
{
}
return resultparent;
}
@Override
protected void onPostExecute(ArrayList<String> result)
{
super.onPostExecute(result);
categoryadapter= new CategoryList(resultparent,resultchild);
categoryadapter.setInflater((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE),CategoryActivity.this);
expandablelistview.setAdapter(categoryadapter);
}
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.imagehome : Intent home = new Intent(CategoryActivity.this,HomeActivity.class);
startActivity(home);
break;
case R.id.imagemenu : Intent menu = new Intent(CategoryActivity.this,MenuActivity.class);
startActivity(menu);
break;
case R.id.imageordernow : Intent ordernow= new Intent(CategoryActivity.this,OrderDetailActivity.class);
startActivity(ordernow);
break;
default :
break;
}
}
}
Category List.java
public class CategoryList extends BaseExpandableListAdapter
{
private static final String TAG_OFFERTA="offerta";
private static final String TAG_PREZZO="prezzo";
private static final String TAG_RESTAURANTID="restaurant_id";
private static final String TAG_MENU="menu";
private static final String TAG_ID="id";
public Activity activity;
public ArrayList<String> resultparent;
public ArrayList<HashMap<String,String>> tempchild;
public ArrayList<Object> resultchild=new ArrayList<Object>();
ArrayList<HashMap<String,String>> childlist = new ArrayList<HashMap<String,String>>();
public LayoutInflater inflater = null;
String id;
String qty;
String title;
String menuid;
String sessionid;
String restorantid;
String price;
public CategoryList(ArrayList<String> grouplist,ArrayList<Object> childItem)
{
resultparent=grouplist;
this.resultchild = childItem;
}
public void setInflater(LayoutInflater mInflater, Activity act)
{
this.inflater = mInflater;
activity = act;
}
@Override
public Object getChild(int groupPosition, int childPosition)
{
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition)
{
return 0;
}
@Override
public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent)
{
tempchild = (ArrayList<HashMap<String,String>>)resultchild.get(groupPosition);
TextView textprice,textmenutitle;
final EditText editqty;
RadioGroup radiogroupchilli;
RadioGroup radiogroupoil;
final ImageView imagechilli;
final ImageView imagechillitwo;
final ImageView imageoil;
final ImageView imagechiz;
// RadioButton radiochillion,radiochillioff,radiooil,radiochiz;
if(convertView == null)
{
convertView = inflater.inflate(R.layout.redlistchild,null);
}
radiogroupchilli=(RadioGroup)convertView.findViewById(R.id.radiogroupchilli);
radiogroupoil=(RadioGroup)convertView.findViewById(R.id.radiogroupoil);
imagechilli=(ImageView)convertView.findViewById(R.id.imagechilli);
imagechillitwo=(ImageView)convertView.findViewById(R.id.imagechillitwo);
imageoil=(ImageView)convertView.findViewById(R.id.imageoil);
imagechiz=(ImageView)convertView.findViewById(R.id.imagechiz);
textprice=(TextView)convertView.findViewById(R.id.textprice);
textprice.setText(tempchild.get(childPosition).get(TAG_PREZZO).toString());
textmenutitle=(TextView)convertView.findViewById(R.id.textmenutitle);
textmenutitle.setText(tempchild.get(childPosition).get(TAG_OFFERTA).toString());
editqty=(EditText)convertView.findViewById(R.id.editqty);
convertView.setTag(childPosition);
radiogroupchilli.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radiochillion :
imagechillitwo.setImageResource(R.drawable.chilitwooff);
imagechilli.setImageResource(R.drawable.chilion);
break;
case R.id.radiochillioff :
imagechillitwo.setImageResource(R.drawable.chilitwoon);
imagechilli.setImageResource(R.drawable.chilioff);
break;
}
}
});
radiogroupoil.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radiooil :
imageoil.setImageResource(R.drawable.oilon);
imagechiz.setImageResource(R.drawable.chiijoff);
break;
case R.id.radiochiz :
imageoil.setImageResource(R.drawable.oiloff);
imagechiz.setImageResource(R.drawable.chijion);
break;
}
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition)
{
return ((ArrayList<String>)resultchild.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition)
{
return resultparent.get(groupPosition);
}
@Override
public int getGroupCount()
{
return resultparent.size();
}
@Override
public long getGroupId(int groupPosition)
{
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
{
TextView texttitle;
final LinearLayout nonvegtitlelistlayout;
if(convertView == null)
{
convertView = inflater.inflate(R.layout.redlistgroup, null);
}
nonvegtitlelistlayout=(LinearLayout)convertView.findViewById(R.id.nonvegtitlelistlayout);
texttitle=(TextView)convertView.findViewById(R.id.texttitle);
texttitle.setText(resultparent.get(groupPosition));
return convertView;
}
@Override
public boolean hasStableIds()
{
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
return true;
}
@Override
public void onGroupCollapsed(int groupPosition)
{
super.onGroupCollapsed(groupPosition);
}
@Override
public void onGroupExpanded(int groupPosition)
{
super.onGroupExpanded(groupPosition);
}
}
最佳答案
而不是直接访问 View (通过遍历 ViewGroup
的子级,这甚至不会像您预期的那样工作,因为 ExpandableListView
回收它的 View 以及 ListView
可以),您应该将输入的数据存储到某种模型中。
换句话说,当您在列表中显示数据时,它应该得到一些信息的支持(在最简单的情况下为 String[]
)。因此,您的任务是用一些特定的类来支持显示的数据,这些类将保存您需要的信息。例如,您可以将其命名为 Option
。
然后,当您在 EditText
中编辑数据时,您将输入的文本保存到与 ExpandableListView
当前位置相对应的 Option
实例中.当您需要检索输入的信息时,您只需遍历保存的每个 Option
。
关于android - 单击可扩展子元素时如何获取编辑框和单选按钮的每个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739634/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!