Java 我正在为英语学习开发一个简单的教程应用程序,我在设置编号位置时遇到了问题
请帮我把这个问题简短地说出来。如果你能帮我解决这个问题,我很高兴 我的MainActivity.java文件是MainActivity.javaJava 我正在为英语学习开发一个简单的教程应用程序,我在设置编号位置时遇到了问题,java,android,listview,Java,Android,Listview,请帮我把这个问题简短地说出来。如果你能帮我解决这个问题,我很高兴 我的MainActivity.java文件是MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Resources res= getResources(
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res= getResources();
mainTopic=res.getStringArray(R.array.MainTopic);
mainDescription=res.getStringArray(R.array.DescriptionContent);
listView= (ListView) findViewById(R.id.listView);
MyAdapter adapter=new MyAdapter(this,mainTopic,image1,mainDescription);
listView.setAdapter(adapter);
}
package androidthirst.company.abhi.totalenglish;
public MyAdapter(Context context, String[] MainTopic,String[] img,String[] description) {
super(context,R.layout.single_row,R.id.textView,MainTopic);
this.context=context;
this.MainTopic=MainTopic;
this.img=img;
this.description=description;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row= layoutInflater.inflate(R.layout.single_row,parent,false);
TextView imageView= (TextView) row.findViewById(R.id.imageView);
TextView textView1= (TextView) row.findViewById(R.id.textView);
TextView textView2= (TextView) row.findViewById(R.id.textView2);
for (int i =1;i<=position;i++) {
imageView.setText(""+i);
}
textView1.setText(MainTopic[position]);
textView2.setText(description[position]);
return row;
}
}
我的活动\u main.xml文件是
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
我的适配器类是MyAdapter.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res= getResources();
mainTopic=res.getStringArray(R.array.MainTopic);
mainDescription=res.getStringArray(R.array.DescriptionContent);
listView= (ListView) findViewById(R.id.listView);
MyAdapter adapter=new MyAdapter(this,mainTopic,image1,mainDescription);
listView.setAdapter(adapter);
}
package androidthirst.company.abhi.totalenglish;
public MyAdapter(Context context, String[] MainTopic,String[] img,String[] description) {
super(context,R.layout.single_row,R.id.textView,MainTopic);
this.context=context;
this.MainTopic=MainTopic;
this.img=img;
this.description=description;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row= layoutInflater.inflate(R.layout.single_row,parent,false);
TextView imageView= (TextView) row.findViewById(R.id.imageView);
TextView textView1= (TextView) row.findViewById(R.id.textView);
TextView textView2= (TextView) row.findViewById(R.id.textView2);
for (int i =1;i<=position;i++) {
imageView.setText(""+i);
}
textView1.setText(MainTopic[position]);
textView2.setText(description[position]);
return row;
}
package.company.abhi.totalenglish;
公共MyAdapter(上下文上下文,字符串[]主主题,字符串[]img,字符串[]说明){
super(上下文,R.layout.single_行,R.id.textView,MainTopic);
this.context=context;
this.MainTopic=MainTopic;
这个。img=img;
这个。描述=描述;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater LayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
视图行=布局更平坦。充气(R.layout.single_row,parent,false);
TextView imageView=(TextView)row.findViewById(R.id.imageView);
TextView textView1=(TextView)row.findViewById(R.id.TextView);
TextView textView2=(TextView)row.findViewById(R.id.textView2);
for(int i=1;ifor循环最终将设置imageView中的位置值。但位置从0开始,所以必须在每个值中添加1。
替换你这个循环
for (int i =1;i<=position;i++) {
imageView.setText(""+i);
}
只需更换此循环:
for (int i =1;i<=position;i++) {
imageView.setText(""+i);
}
注意:您不需要循环,因为getView函数正在按其位置逐行膨胀。它不会同时膨胀所有行。更改imageView.setText(“+(位置+1))的for(int i=1…{};现在不工作从11开始为什么在那里使用for循环?您正在设置文本视图的文本,直到它到达位置。因此视图的最终文本始终是要显示的项目的当前位置。请删除for循环,并使用“imageView.setText”(“+位置”)设置文本'完成了。实际的错误是,你用1而不是0开始循环。如果你不想让它从0开始,请使用@Luis Miguel Sierra的解决方案。@GPuschka就是这样。我猜他必须用(位置+1)将索引显示为1而不是0 Hanks dude,我终于这样做了。我将我的for循环更改为for(int i=1;i)