Java 有没有一种方法可以遍历ListView的所有子视图并将它们转换为TextView

Java 有没有一种方法可以遍历ListView的所有子视图并将它们转换为TextView,java,android,listview,drawable,Java,Android,Listview,Drawable,我正在开发一个用于浏览文件的应用程序,并且正在使用android本机资源布局进行数据填充,名为android.R.simple\u list\u item\u 1,我已经尝试过listview的方法,看看是否可以在列表中的每个项的左侧添加一个可绘制的内容,但没有成功。因此,我从listview访问视图的唯一方法是在eventOnItemClick上,其中所点击的视图作为参数传递给该方法,然后我可以用这种方式对其进行格式化,以用于可绘制视图 public class MainActivity ex

我正在开发一个用于浏览文件的应用程序,并且正在使用android本机资源布局进行数据填充,名为
android.R.simple\u list\u item\u 1
,我已经尝试过listview的方法,看看是否可以在列表中的每个项的左侧添加一个可绘制的内容,但没有成功。因此,我从listview访问视图的唯一方法是在event
OnItemClick
上,其中所点击的视图作为
参数
传递给该方法,然后我可以用这种方式对其进行格式化,以用于可绘制视图

public class MainActivity extends AppCompatActivity {
//Define a listview for holding the data mined from storage
     public ListView mydata;
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          //Define the listview
           mydata=findViewById(R.id.data);
           mydata.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id){
               //Cast view to TextView at position
                  TextView r=(TextView)view;
              //get the drawable and set to textview 
                    Drawable mydraw= ResourcesCompat.getDrawable(getResources(),R.drawable.ic_baseline_file_copy_24,null);
                    r.setCompoundDrawables(mydraw,null,null,null);
            }
      }
}
public类MainActivity扩展了AppCompatActivity{
//定义用于保存从存储中挖掘的数据的listview
公共列表视图mydata;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//定义listview
mydata=findViewById(R.id.data);
mydata.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//在位置将视图强制转换为文本视图
TextView r=(TextView)视图;
//获取drawable并设置为textview
Drawable mydraw=ResourcesCompat.getDrawable(getResources(),R.Drawable.ic\u baseline\u file\u copy\u 24,null);
r、 setCompoundDrawables(mydraw,null,null,null);
}
}
}
是否可以在其中获取listview中的所有视图,创建一个
循环
对所有视图进行迭代
,并转换为TextView数组,然后将我的drawable设置为TextView?

最终静态类YourItemClass{
...
}
最终静态类视图持有者{
文本视图mTextView;
私有视图持有者(@NonNull final View simpleListItem1){
如果(!(simpleListItem1 instanceof TextView))抛出新的IllegalArgumentException(“TextView应作为布局的根目录”);
this.mTextView=(TextView)simpleListItem1;
}
}
最后一个类CustomArrayAdapter扩展了ArrayAdapter{
私人最终提款权;
私人最终布局平面图mLayoutInflater;
公共CustomArrayAdapter(@NonNull最终上下文,@NonNull最终列表对象){
超级(上下文、资源、对象);
this.mDrawable=ResourcesCompat.getDrawable(getResources(),R.drawable.ic\u baseline\u file\u copy\u 24,null);
this.mLayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
}
@非空
@凌驾
公共视图getView(最终整型位置,@Nullable视图convertView,@NonNull最终视图组父级){
视窗座;
if(convertView==null){
convertView=this.mLayoutInflater.inflate(android.R.layout.simple\u list\u item\u 1,父项,false);
支架=新的视图支架(convertView);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
最终YourItemClass cYourItemClassAtSpecificPosition=this.getItem(position);
holder.mTextView.setCompoundDrawables(this.mDrawable,null,null,null);
返回视图;
}
}
然后从您的活动/片段:

private void setItemsToListView(@NonNull final List<YourItemClass> items) {
    mListView.setAdapter(new CustomArrayAdapter(getActivity(), items));
}
private void setItemsToListView(@NonNull final List items){
setAdapter(新的CustomArrayAdapter(getActivity(),items));
}

此代码将为ListView中显示的每一行运行“setCompoundDrawables()”。

您需要扩展ListView的ArrayAdapter,并设法从那里调用“setCompoundDrawables()”。我将尝试这样做,谢谢,array adapter是否获得了该方法?这是一个TextView方法。扩展的适配器仅用于充气“android.R.simple\u list\u item\u 1”,然后使用该方法设置其可绘制性。你能在同一个页面上发布答案吗?
private void setItemsToListView(@NonNull final List<YourItemClass> items) {
    mListView.setAdapter(new CustomArrayAdapter(getActivity(), items));
}