android studio怎么新建adapter的自定义列表

android studio怎么新建adapter的自定义列表,第1张

在例子中我们把原来的AndroidGraphics2DTutorial改名为AndroidGra

phics2DTutorial1,重新创建一个类AndroidGraphics2DTutorial来显示示例列表。打算使用三个View来显示列表中的一项,一个图标(例子中随机使用了一些图

标),一个文本框显示示例Activity名称,另一个文本框显示示例的具体信息。在res\layout目录下创建一个

activitylist.xml。内容如下:

这次我们不从AndroidManifest.xml中读取Activity列表,而是使用String

Array资源。在res\value\string.xml 中添加下列Array资源:

<string-array name=”activity_name”>         <item>Bezier</item>         <item>Brush</item>         <item>Colors</item>         <item>Font</item>   <item>Image</item>  <item>Path</item>  <item>Pen</item>  <item>Shape</item>   <item>Transform</item> </string-array>   <string-array name=”activity_info”>         <item>Bezier</item>         <item>Pattern ,Gradients</item>         <item>Colors</item>         <item>FontDemo, FontTypes</item>   <item>DrawMap, JumbleImage, SeeThroughImage</item>  <item>Polys, Paths</item>  <item>Lines, Dashes, LineCap,LineJoin</item>  <item>Oval ,Pear ,Shape2DDemo</item>   <item>Transform</item> </string-array>

定义了这些资源后,可以在程序中使用自定义Adapter来显示列表:

class ActivityInfo{      int iconIndex      String activityName      String activityInfo     }         class ActivityInfoAdapter extends ArrayAdapter<ActivityInfo>{          int resource      public ActivityInfoAdapter(Context context, int resourceId,        List<ActivityInfo> objects) {       super(context, resourceId, objects)       resource=resourceId      }          @Override      public View getView(int position,View ConvertView,ViewGroup parent){       LinearLayout activityInfoView       ActivityInfo activityInfo=getItem(position)       String activity_Name=activityInfo.activityName       String activity_Info=activityInfo.activityInfo       int iconIndex=activityInfo.iconIndex       if(ConvertView==null){        activityInfoView=new LinearLayout(getContext())        String inflater=Context.LAYOUT_INFLATER_SERVICE        LayoutInflater vi    vi=(LayoutInflater)getContext().getSystemService(inflater)        vi.inflate(resource, activityInfoView,true)       }else{        activityInfoView=(LinearLayout)ConvertView       }       TextView activity_NameView     =(TextView)activityInfoView.findViewById(R.id.activityName)       TextView activity_InfoView      =(TextView)activityInfoView.findViewById(R.id.activityInfo)       ImageView iconView         =(ImageView)activityInfoView.findViewById(R.id.iconImage)       activity_NameView.setText(activity_Name)       activity_InfoView.setText(activity_Info)       iconView.setImageResource(iconIndex)       return activityInfoView           }     }         public class AndroidGraphics2DTutorial extends ListActivity {          private ArrayList<ActivityInfo> activityInfos          =new ArrayList<ActivityInfo>()      private ActivityInfoAdapter aa      private final static String packgeName="com.pstreets.graphics2d"        @Override      public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState)       Resources res = getResources()       String[] activity_Names = res.getStringArray(R.array.activity_name)       String[] activity_Infos = res.getStringArray(R.array.activity_info)       for(int i=0i<activity_Names.lengthi++){        ActivityInfo activityInfo=new ActivityInfo()        activityInfo.activityName=activity_Names[i]        activityInfo.activityInfo=activity_Infos[i]        activityInfo.iconIndex=R.drawable.icon1+i        activityInfos.add(activityInfo)       }           aa=new ActivityInfoAdapter(this,R.layout.activitylist,activityInfos)       setListAdapter(aa)      }          @Override      protected void onListItemClick(ListView l, View v, int position, long id) {       ActivityInfo activityInfo = (ActivityInfo) l.getItemAtPosition(position)       Intent intent = new Intent()       intent.setClassName(this,            packgeName+".example." +activityInfo.activityName)       startActivity(intent)      }     } 

类ActivityInfo定义列表每个元素的Data Model,为Activity的Icon资源ID,Activity Name以及Activity

Info.

类ActivityInfoAdapter为自定义Adapter,关键的是public View getView(int position,View

ConvertView,ViewGroup parent)。这个函数返回用来显示没个类别元素的View的示例。

方法1:在布局文件中给需要单击事件的按钮添加一个onClick属性。

再在MainActivity.java里添加实现代码,如:

public void changeStr(View view) {

textView.setText("按了第1个按钮。")

这个方法适合单个按钮,而且我觉得这个方法好像比较好理解,跟其他编程语文实现按钮功能差不多。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11204151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存