根布局用的scrollview,linerlayout动态添加进去很N个item布局,(做的问卷项目,涉及到单选多选,因为是读取本地文件不涉及网络加载,脑残了一下,就没有用listview,直接这么写了),现在要加一个可控制滚动到某一个题的功能。在不改动原有代码的情况下求大神给个思路。
布局核心代码:
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:scrollbars="none">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/lly_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:layout_marginTop="50dp"
android:background="@drawable/submit_click_selector"
android:gravity="center"
android:text="提交"
android:textColor="@color/white"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
</toan.android.floatingactionmenu.ObservableScrollView>
界面相关部分代码块:
private void initview() {
//这是要把问题的动态布局加入的布局
lly_test = (LinearLayout) findViewById(R.id.lly_test);
title = (TextView) findViewById(R.id.title);
//获得问题即第二层的数据
the_quesition_list = questionnaire.getQue_list();
//根据第二层问题的多少,来动态加载布局
for (int i = 0; i < the_quesition_list.size(); i++) {
que_view = xInflater.inflate(R.layout.item_question, null);
TextView txt_que = (TextView) que_view.findViewById(R.id.txt_question_item);
q_texviews.add(txt_que);
//这是第三层布局要加入的地方
LinearLayout add_layout = (LinearLayout) que_view.findViewById(R.id.lly_answer);
View line_view = que_view.findViewById(R.id.vw_line);
set(txt_que,the_quesition_list.get(i).getQuestion_id()+"."+ the_quesition_list.get(i).getQuestion_heading(), the_quesition_list.get(i).getQuestion_type());
//获得答案即第三层数据
the_answer_list = the_quesition_list.get(i).getAns_list();
imglist2 = new ArrayList<ImageView>();
for (int j = 0; j < the_answer_list.size(); j++) {
if (the_quesition_list.get(i).getQuestion_type().equals("0")){
Map<String,Object> map = new HashMap<String, Object>();
ans_view=xInflater.inflate(R.layout.item_answer2, null);
ans_view.setTag(j);
String msg=the_answer_list.get(j).getAnswer_content();
TextView text = (TextView) ans_view.findViewById(R.id.text);
a_texviews.add(text);
EditText image = (EditText) ans_view.findViewById(R.id.txt_answer_item);
image.setFilters(new InputFilter[]{filter});
if (msg.equals("身高(cm)")||msg.equals("体重(kg)")||msg.equals("血压:收缩压\n(高压)(mmHg)")||msg.equals("血压:舒张压\n(低压)(mmHg)")||msg.equals("心率(次/分)")){
String digists = "0123456789";
image.setInputType(InputType.TYPE_CLASS_NUMBER);
image.setKeyListener(DigitsKeyListener.getInstance(digists));
}
map.put("key",i+"=="+ msg);
map.put("value", image);
text.setText(msg);
list.add(map);
image.setTag(the_quesition_list.get(i).getQuestion_id()+","+the_answer_list.get(j).getAnswer_id());
zhengkanglist.add(image);
}else{
ans_view = xInflater.inflate(R.layout.item_answer, null);
TextView txt_ans = (TextView) ans_view.findViewById(R.id.txt_answer_item);
a_texviews.add(txt_ans);
ImageView image = (ImageView) ans_view.findViewById(R.id.image);
//判断单选多选加载不同选项图片
if (the_quesition_list.get(i).getQuestion_type().equals("1")) {
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false));
} else {
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false));
}
imglist2.add(image);
txt_ans.setText(the_answer_list.get(j).getAnswer_content());
LinearLayout lly_answer_size = (LinearLayout) ans_view.findViewById(R.id.lly_answer_size);
lly_answer_size.setOnClickListener(new answerItemOnClickListener(i, j, the_answer_list, txt_ans));
}
add_layout.addView(ans_view);
}
imglist.add(imglist2);
lly_test.addView(que_view);
}
}
目的:点击提交时,提示某题没做,然后界面就直接滚动到该题的位置!