"ArrayAdapter에 리소스 ID가 TextView" XML 문제가 필요합니다.
보기를 표시하도록 설정할 때 오류가 발생합니다.ListView
표시할 파일(텍스트 파일)에 대해 입력합니다.나는 그것이 XML과 관련이 있다고 확신합니다. 나는 단지 정보를 보여주고 싶습니다.this.file = fileop.ReadFileAsList("Installed_packages.txt");
. 내 코드:
public class Main extends Activity {
private TextView tv;
private FileOperations fileop;
private String[] file;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.fileop = new FileOperations();
this.file = fileop.ReadFileAsList("Installed_packages.txt");
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.TextView01);
ListView lv = new ListView(this);
lv.setTextFilterEnabled(true);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.file));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
setContentView(lv);
}
}
list_item.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp"
android:textSize="16sp"
android:textColor="#000">
</LinearLayout>
main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<ScrollView
android:id="@+id/SCROLLER_ID"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:fillViewport="true">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5sp"
android:id="@+id/TextView01"
android:text="@string/hello"/>
</ScrollView>
</LinearLayout>
ArrayAdapter에서 리소스 ID를 TextView XML 예외로 지정해야 합니다. 즉, 사용자가 제공하지 않는 것을 의미합니다.ArrayAdapter
기대합니다.이 생성자를 사용할 때:
new ArrayAdapter<String>(this, R.layout.a_layout_file, this.file)
R.Layout.a_layout_file
오직 a를 포함하는 xml 레이아웃 파일의 ID여야 합니다.TextView
(더TextView
다른 배치로 감쌀 수 없습니다. 마치 a처럼.LinearLayout
,RelativeLayout
등!), 다음과 같은 것.
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
// other attributes of the TextView
/>
목록 행 레이아웃을 약간 다른 것으로 하려면 단순합니다.TextView
위젯은 이 생성자를 사용합니다.
new ArrayAdapter<String>(this, R.layout.a_layout_file,
R.id.the_id_of_a_textview_from_the_layout, this.file)
당신이 공급하는 곳에서id
다양한 뷰를 포함할 수 있지만 반드시 포함해야 하는 레이아웃의TextView
와 그리고id
(세 번째 매개 변수) 당신이 당신에게 전달하는 것은ArrayAdapter
그래서 어디에 두는지 알 수 있습니다.Strings
행 배치에
Soution이 왔습니다.
listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TextView>
</LinearLayout>
자바 코드:
String[] countryArray = {"India", "Pakistan", "USA", "UK"};
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.listitem,R.id.textview, countryArray);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
ArrayAdapter를 확장할 때 해당 메시지가 나타나면 항목을 표시할 올바른 리소스 ID를 제공하지 않았기 때문에 해당 오류가 발생하는 것입니다.생성자에서 슈퍼 클래스를 호출하고 TextView의 리소스 ID를 전달합니다.
//Pass in the resource id: R.id.text_view
SpinnerAdapter spinnerAddToListAdapter = new SpinnerAdapter(MyActivity.this,
R.id.text_view,
new ArrayList<>());
어댑터:
public class SpinnerAdapter extends ArrayAdapter<MyEntity> {
private Context context;
private List<MyEntity> values;
public SpinnerAdapter(Context context, int textViewResourceId,
List<MyEntity> values) {
//Pass in the resource id: R.id.text_view
super(context, textViewResourceId, values);
this.context = context;
this.values = values;
}
문제는 다음과 같습니다.
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.file));
다음으로 변경할 때:
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, this.file));
효과가 있어요!
언급URL : https://stackoverflow.com/questions/9280965/arrayadapter-requires-the-resource-id-to-be-a-textview-xml-problems
'source' 카테고리의 다른 글
SVG에 SVG 내장? (0) | 2023.09.11 |
---|---|
안에 다중 조건을 가지는 방법: 타임리프를 사용하여 태그를 지정하는 경우 (0) | 2023.09.11 |
파이썬 내부 수업의 목적은 무엇입니까? (0) | 2023.09.11 |
셸에서 XPath 한 줄을 실행하는 방법? (0) | 2023.09.11 |
현재 로그인된 사용자 목록(워드 프레스) (0) | 2023.09.11 |