참고 : 내 문제는 : 처음으로 글자를 클릭하면 가로보기에서 데이터를로드하지만 두 번째 글자를 클릭하면 다음 글자, 내가안드로이드에서 각각의 데이터로 다른 글자를 클릭 할 때 가로 레이아웃을 새로 고치는 방법
java.lang.IllegalStateException: HorizontalScrollView can host only one direct child
at android.widget.HorizontalScrollView.addView(HorizontalScrollView.java:213)
을 얻고있다 그래서 나는 많은 시간을 노력하지만, 이전 데이터 뷰를 제거 할 수없는 새로운 데이터가 서로 다른 문자를 클릭 할 때마다 볼, 이전 뷰의 데이터 항목을 추가하려고합니다.
저는 탭과 같은 텍스트 뷰에서 A부터 Z까지의 문자가 있습니다.
A B C D........X Y Z.
horizontalview with no data if no select
을 클릭하거나 A를 선택하면됩니다. display 관련 데이터를 가로보기로 표시합니다. 동그라미 배경.
A B C.......X Y Z
Apple Aeroplane Argo
5 kg 100 9 and many more
내가 D를 클릭하거나 선택하면. display 관련 데이터를 가로보기로 표시합니다. 동그라미 배경.
A B C.......X Y Z
Duck Dog
5 kg 12 and many more
하지만 오류를
01-12 16:21:19.031: E/AndroidRuntime(16246): java.lang.IllegalStateException: HorizontalScrollView can host only one direct child
01-12 16:21:19.031: E/AndroidRuntime(16246): at android.widget.HorizontalScrollView.addView(HorizontalScrollView.java:213)
을 발생하고 내가 내 코드에서 한, 당신이 제안을 전해 주 시겠어요하시기 바랍니다 경우 다음 D를 클릭하면, 같은 시간을 표시 할 수 있습니다.
for (int j = 0; j < letters.length; j++) {
btnTag = new PlanTextView(mContext);
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
btnTag.setText(letters[j].toString());
btnTag.setPadding(6, 6, 6, 6);
btnTag.setTextSize(20);
btnTag.setId(j + 1);
listBtnTag.add(btnTag);
final int index = j;
btnTag.setOnClickListener(new OnClickListener() {
private boolean stateChanged = true;
private boolean flag;
private LinearLayout yelloDetailsLinearLayout1;
private LinearLayout innerYello1;
@SuppressLint("NewApi")
public void onClick(View v) {
yelloDetailsLinearLayout1 = new LinearLayout(mContext);
// letterLinear.setPadding(5, 5, 5, 5);
yelloDetailsLinearLayout1.setOrientation(LinearLayout.HORIZONTAL);
yelloDetailsLinearLayout1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
innerYello1 = new LinearLayout(mContext);
// letterLinear.setPadding(5, 5, 5, 5);
innerYello1.setOrientation(LinearLayout.HORIZONTAL);
innerYello1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
// displayYello(btnTag.getText().toString());
List<String> sorted = new ArrayList<String>();
sorted = SortedList(listBtnTag.get(index).getText()
.toString(), yellonameList);
if (sorted.size() == 0) {
Toast.makeText(mContext, "No Yello Page Found",
Toast.LENGTH_SHORT).show();
} else {
for (int i = 0; i < sorted.size(); i++) {
LinearLayout rowletter1 = new LinearLayout(mContext);
rowletter1.setOrientation(LinearLayout.VERTICAL);
rowletter1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
rowletter1.setPadding(10, 0, 0, 0);
tvde = new TextView(mContext);
tvde.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
btnNumber = new Button(mContext);
btnNumber.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
String[] spits = sorted.get(i).toString().split("\\,");
tvde.setText("Your Selected=" + spits[0].toString());
btnNumber.setText(spits[1].toString());
rowletter1.addView(tvde);
rowletter1.addView(btnNumber);
innerYello1.addView(rowletter1);
flag=true;
}
yelloDetailsLinearLayout1.addView(innerYello1);
horizontalScrollview.addView(yelloDetailsLinearLayout1);
}
for (int i = 0; i < listBtnTag.size(); i++) {
if (v.getId() == index) {
// reset background to default;
listBtnTag.get(index).setBackgroundResource(
R.drawable.circel_off);
} else {
listBtnTag.get(index).setBackgroundResource(
R.drawable.circel_on);
}
stateChanged = !stateChanged;
}
}
});
rowletter.addView(btnTag);
}
오류가 레이아웃을 참조한 것으로 보입니다. 스크롤보기에는 자식이 하나만있을 수 있습니다.RelativeLayout 주위에 스크롤 뷰를 감싸고 모든 자식을이 상대 레이아웃 안에 배치합니다. – Skynet