This is an old revision of the document!


Laboratorul 05.

LISTS

Ex 0 Make a new project and do not generate a xml file.
Add the next image into the project

Ex 1 (If you have generated a xml file in the ex 0, delete it) Add a new xml file named activity_main.xml and make it a LinearLayout with width match_parent and height wrap_content with the orientation vertical. In it, add a ListView with width and height match_parent and an id android:id=”@+id/lv_list_cars”

Ex 2 Create another xml file (a LinearLayout ) named list_item.xml. The orientation shoud be horizontal and the width and the height shoud be wrap_content.
In the LinearLayout, add an ImageView(with id iv_image_element) and a TextView(with id tv_name_element), both with width and height wrap_content.


Ex 3 In the MainActivity.java file create another 2 classes (not in class MainActivity): class Car with a String name, and a int imageResource and another class named TagCar with a TextView name and a ImageView image.

Ex 4 Create a new java file named CarAdapter which extends BaseAdapter. In it, add an Activity object named context, and an ArrayList of Car named cars.
Create a constructor which receive an Activity and initializate the context, and the cars arrayList, also add the next function addCar:

  Activity context;
  ArrayList<Car> cars;
  
  public CarAdapter (Activity context) {
     //TODO
  }
  
  public void addCar(String nameCar, int resource){
      Car car = new Car();
      car.name = nameCar;
      car.imageResource = resource;
      cars.add(car);
      this.notifyDataSetChanged();
  }
  


Ex 5 Implement the 4 methods, and in the getView function add this text:

  public View getView(int i, View view, ViewGroup viewGroup) {
      View element;
      
      LayoutInflater layoutInflater = context.getLayoutInflater();
      element = layoutInflater.inflate(R.layout.list_item, null);
      TagCar car = new TagCar();
      car.name = element.findViewById(R.id.tv_name_element);
      car.image = element.findViewById(R.id.iv_image_element);
      element.setTag(car);
          
      TagCar tag = (TagCar) element.getTag();
      tag.name.setText(cars.get(i).name);
      tag.image.setImageResource(cars.get(i).imageResource);
      return element;
  }
  

Look in Course 4 - List, adapters, recylcing slides 29-31 and tell the teaching assistant if this method is efficient or not (if it's not, make it efficient).

Ex 6 In MainActivity class, in the onCreate function, connect the ListView from the java to the xml (TODO 1)
TODO 2: initializate the object carAdapter(2)
TODO 3: set the carAdapter adapter for list of cars (3).
TODO 4: in the carAdapter, add 4 cars (with addCar function).

  public class MainActivity extends Activity {
      private ListView listOfCars;
      CarAdapter carAdapter;
      private EditText addNewCar;
      private Button addButton;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          // TODO 1, 2, 3,4
      }
  }


RUN THE APP
Ex 7 In the activity_main.xml, in the linearLayout , add another LinearLayout (width match parent and height wrap_content, orientation horizontal) and add in it an EditText (with id ed_new_car, height wrap_content and width 200dp) and a Button (id b_add_car, width and height wrap_content)

Ex 8 In MainActivity,in onCreate function, connect the EditText and the Button from the java to the xml file. Set an onClickListener on the button: when clicked, get the Text from the editText and convert it to String, and add a new car in the carAdapter using the name from the editText. After that, set the editText's text to ””

dapm/laboratoare/05.1521810995.txt.gz · Last modified: 2018/03/23 15:16 by ioana_maria.culic
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0