java 列表视图的数组适配器示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 列表视图的数组适配器示例相关的知识,希望对你有一定的参考价值。

public class BuildingAdapter extends ArrayAdapter<JSONObject>
{
  private Context my_context;

  private int my_layout_id;

  private ArrayList<JSONObject> my_data = null;

  public BuildingAdapter( Context context, int layoutResourceId, ArrayList<JSONObject> data )
  {
    super( context, layoutResourceId, data );
    my_context = context;
    my_layout_id = layoutResourceId;
    my_data = data;
  }

  @Override
  public View getView( int position, View convertView, ViewGroup parent )
  {
    View row = convertView;
    BuildingItem holder = null;

    if ( row == null )
    {
      LayoutInflater inflater = ( (Activity) my_context ).getLayoutInflater();
      row = inflater.inflate( my_layout_id, parent, false );

      holder = new BuildingItem();
      holder.txtName = (TextView) row.findViewById( R.id.buildingname );
      holder.btnFloor = (Button) row.findViewById( R.id.floors );


      row.setTag( holder );
    }
    else
    {
      holder = (BuildingItem) row.getTag();
    }

    final JSONObject item = my_data.get( position );
    if ( item != null )
    {
      try
      {
        holder.txtName.setText( item.getString( "name" ) );
      } catch ( JSONException e )
      {
        holder.txtName.setText( "N/A" );
        e.printStackTrace();
      }

      holder.btnFloor.setOnClickListener( new View.OnClickListener()
      {
        @Override
        public void onClick( View v )
        {
          try
          {
            ( (BuildingHandler) my_context ).handleFloors(item.getString( "id" ));
          } catch ( JSONException e )
          {
            e.printStackTrace();
          }
        }
      } );

      row.setOnClickListener( new View.OnClickListener()
      {
        @Override
        public void onClick( View v )
        {
          if ( my_context instanceof BuildingHandler )
          {
            try
            {
              ( (BuildingHandler) my_context ).handleSelect( item.getString( "id" ) );
            } catch ( JSONException e )
            {
              e.printStackTrace();
            }
          }
        }

      } );
    }
    else
    {
      holder.txtName.setText( "NA" );
    }

    return row;
  }

  static class BuildingItem
  {
    TextView txtName;
    Button btnFloor;
  }
}

以上是关于java 列表视图的数组适配器示例的主要内容,如果未能解决你的问题,请参考以下文章

如何使列表视图出现在片段中?

设置数组适配器列表视图

在列表视图中使用具有更多视图的数组适配器

如何使用 glide* 使用数组列表中的自定义适配器将图像设置为列表视图

安卓讲课笔记5.6 列表视图

安卓讲课笔记5.6 列表视图