【发布时间】:2014-05-26 05:33:46
【问题描述】:
我在动态设计表单时遇到问题。它是表格形式,如下所示:
| | Great | Good | Average | Bad |
|Quality | | - | | |
|Perform | | | - | |
|Support | - | | | |
第一行(标题行)和第一列是动态的,即行和列可以增加或减少,并且将来自网络服务。其他单元格将像按钮一样,只有一个按钮会被激活( - )。
有人知道如何实现这一目标吗?
这是我使用线性布局所做的:这只是一个模拟数据,我还没有实现任何点击事件或捕获用户输入(我不知道该怎么做)它是否涉及管理 ID..
截图: https://drive.google.com/file/d/0BzbVBFzhlWapbzlFeWlJSVF5M1k/edit?usp=sharing
我使用的对象模型是真实对象模型的复制品。
//Table Form Type Layout
private void createFormWithLinearLayouts()
{
//Get Feedback Answer List
ArrayList<FeedbackAnswer> feedbackAnswerList = feedbackQuestionSection.getFeedbackAnswerList();
//Get Feedback Question List
ArrayList<FeedbackQuestion> feedbackQuestionList = feedbackQuestionSection.getFeedbackQuestionList();
//For loop for Questions
for(int i= -1; i< feedbackQuestionList.size();i++)
{
LinearLayout cLayout = new LinearLayout(this);
cLayout.setOrientation(LinearLayout.HORIZONTAL);
cLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(5, 5, 5, 5);
//For loop for AAnswers
for (int j = -1; j < feedbackAnswerList.size(); j++)
{
TextView tv;
tv = new TextView(this);
tv.setWidth(100);
tv.setHeight(50);
tv.setLayoutParams(params);
if(i == -1 && j== -1)
{
tv.setText(" ");
}
else if(i == -1 && j!= -1)
{
tv.setText(feedbackAnswerList.get(j).getDesc());
}
else if(j != -1)
{
//Buttons or Simply Color Change for Select or DeSelect
//Get Answer from Question
FeedbackAnswer feedbackAnswerOfQuestion = feedbackQuestionList.get(i).getFeedbackAnswer();
if(feedbackAnswerList.get(j).getSeqNo() == feedbackAnswerOfQuestion.getSeqNo())
{
tv.setText(feedbackAnswerList.get(j).getDesc()); //The PreSelected Answer will Come from Server
}
else
{
tv.setText(" - - -");
}
}
else
{
tv = new TextView(this);
tv.setWidth(80);
tv.setHeight(50);
tv.setLayoutParams(params);
tv.setText(feedbackQuestionList.get(i).getDesc());
}
cLayout.addView(tv);
}
parentLayout.addView(cLayout);
}
}
/* 在对象模型中准备的数据
//Prepare Feedback Question Section
public void prepareFeedbackQuestionSection()
{
//Question Section (Whole Layout)
feedbackQuestionSection = new FeedbackQuestionSection();
/******** Answers will show as Header row **************/
FeedbackAnswer feedbackAnswer1 = new FeedbackAnswer();
feedbackAnswer1.setDesc("Great");
feedbackAnswer1.setSeqNo(1);
FeedbackAnswer feedbackAnswer2 = new FeedbackAnswer();
feedbackAnswer2.setDesc("Good");
feedbackAnswer2.setSeqNo(2);
FeedbackAnswer feedbackAnswer3 = new FeedbackAnswer();
feedbackAnswer3.setDesc("Average");
feedbackAnswer3.setSeqNo(3);
FeedbackAnswer feedbackAnswer4 = new FeedbackAnswer();
feedbackAnswer4.setDesc("Bad");
feedbackAnswer4.setSeqNo(4);
//Answer List (Row Header Texts)
ArrayList<FeedbackAnswer> feedbackAnswerList = new ArrayList<FeedbackAnswer>();
feedbackAnswerList.add(feedbackAnswer1);
feedbackAnswerList.add(feedbackAnswer2);
feedbackAnswerList.add(feedbackAnswer3);
feedbackAnswerList.add(feedbackAnswer4);
/*** Questions will show as First Column Texts **************/
FeedbackQuestion feedbackQuestion1 = new FeedbackQuestion();
feedbackQuestion1.setDesc("Quality");
feedbackQuestion1.setSeqNo(1);
feedbackQuestion1.setFeedbackAnswer(feedbackAnswer3);
FeedbackQuestion feedbackQuestion2 = new FeedbackQuestion();
feedbackQuestion2.setDesc("Performance");
feedbackQuestion2.setSeqNo(2);
feedbackQuestion2.setFeedbackAnswer(feedbackAnswer2);
FeedbackQuestion feedbackQuestion3 = new FeedbackQuestion();
feedbackQuestion3.setDesc("Support");
feedbackQuestion3.setSeqNo(3);
feedbackQuestion3.setFeedbackAnswer(feedbackAnswer4);
//Question List (First Column Texts)
ArrayList<FeedbackQuestion> feedbackQuestionList = new ArrayList<FeedbackQuestion>();
feedbackQuestionList.add(feedbackQuestion1);
feedbackQuestionList.add(feedbackQuestion2);
feedbackQuestionList.add(feedbackQuestion3);
//Add to Question Section
feedbackQuestionSection.setFeedbackAnswerList(feedbackAnswerList);
feedbackQuestionSection.setFeedbackQuestionList(feedbackQuestionList);
}
/** 布局 */
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
/** OnCreate() */ @覆盖 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.feedback_form_dynamic);
//Get Linear Layout
parentLayout = (LinearLayout) findViewById(R.id.layout);
//Prepare Data
prepareFeedbackQuestionSection();
//Create Form
createFormWithLinearLayouts();
}
【问题讨论】:
-
嗨,我还没有编写任何代码,我正在以编程方式尝试表格布局和简单的线性布局,但我无法实现这一点。关于网格布局,我不知道如何使用两个不同的数组列表,标题行中的文本视图是一个数组列表,第一列中的文本视图是另一个数组列表。
-
我认为 Grid 在这种情况下无法正常工作,能否请您发布代码,您使用线性或表格布局做了什么?
-
@user3675110 你试过的只是告诉我们..这样才能更好地理解你的问题
-
嗨,我已经编辑了我的帖子以包含更多信息以及我拥有线性布局的代码。
标签: android forms layout dynamic grid