انشاء List لساعات الاندرويد

في اكمال لسلسة تطبيقات اندرويد وير سنقوم اليوم بشرح انشاء قائمة بسيطة تساعدنا في معرفة عمل القوائم في تطبيقات اندرويد وير ولايخفى عليكم ان اكثر العناصر استخدام في التطبيقات هي القوائم ? .

في البداية سنحتاج الى انشاء تطبيق اندرويد وير جديد راجع هنا.

  • استخدام WearableListView :

تحتوي مكتبة wearable على مكون خاص للتعامل مع القوائم ويحتوي على خصائص ListView ولكن موجهه للاندرويد وير ويمكن اضافته الى ملف التصميم – Layout – كما في الاسفل :

 <android.support.wearable.view.WearableListView
            android:id="@+id/wearable_list"
            android:layout_height="match_parent"
            android:layout_width="match_parent">
        </android.support.wearable.view.WearableListView>
  • اضافة العناصر الى List ( القائمة ) :

تعلمنا في انشاء تطبيقات Android ان اي قائمة تحتاج الي Adapter  وهنا لايوجد اختلاف فاي قائمة تحتاج الى Adapter ولكن سيكون بطريقة مختلفة كما سنلاحظ الان في الكود بالاسفل :

public class MyAdapter extends WearableListView.Adapter {
    private final LayoutInflater mInflater;
    ArrayList<String> listItems;

    public MyAdapter(Context context, ArrayList<String> listItems) {
        mInflater = LayoutInflater.from(context);
        this.listItems = listItems;
    }

    @Override
    public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new WearableListView.ViewHolder(
                mInflater.inflate(R.layout.row_simple_item_layout, null));
    }

    @Override
    public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
        TextView view = (TextView) holder.itemView.findViewById(R.id.textView);
        view.setText(listItems.get(position));
        holder.itemView.setTag(position);
    }

    @Override
    public int getItemCount() {
        return listItems.size();
    }
}

في البداية نلاحظ ان Class وريث من WearableListView للتعامل مع List الخاصة باندرويد وير وقمنا باضافة Constructr لارسال البيانات من Activity الرئيسي ايضا نلاحظ وجود دالة onCreateViewHolder لربط التصميم الخاص بنا للعناصر مع الـAdapter اما دالة onBindViewHolder فستكون لعرض عناصر القائمة وتعبئتها واخيرا دالة getItemCount قستكون لاعادة عدد عناصر القائمة .

  • ارسال البيانات من Activity :

سنقوم اولا بتعريف WearableListView كما تعلمنا في تطبيقات اندرويد وسنقوم باستدعاء Class Adapter وارسال البيانات الى Adapter ثم وضعها داخل WearableListView كما سنلاحظ في الكود القادم :

public class MainActivity extends Activity implements WearableListView.ClickListener {

    private WearableListView mListView;
    private  ArrayList<String> listItems = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                // Add Views here
                listItems.add("اذكار الصباح");
                listItems.add("اذكار المساء");
                listItems.add("اذكار النوم");
                listItems.add("اذكار اخرى");
                listItems.add("ادعية");
                mListView = (WearableListView) stub.findViewById(R.id.wearable_list);
                mListView.setAdapter(new MyAdapter(MainActivity.this, listItems));
                mListView.setClickListener(MainActivity.this);
            }
        });
    }



    @Override
    public void onClick(WearableListView.ViewHolder viewHolder) {
        //لتخصيص كل عنصر استخدم
        /*
        switch (viewHolder.getAdapterPosition()){
            case 0:
                break;
            case 1:
                break;
            ...
        }
         */
        Toast.makeText(this, "" + listItems.get(viewHolder.getLayoutPosition()), Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onTopEmptyRegionClick() {

    }


}

في البداية implements لـWearableListView.ClickListner حتى يقوم بتنفيذ مهمة عند الضغط على اي من عناصر القائمة وايضا قمنا بتعريف WearableListView وايضا انشئنا ArrayList ليكون مستودع للبيانات الذي سنقوم بعرضها للمستخدم 

mListView.setAdapter(new MyAdapter(MainActivity.this, listItems));

قمنا باضافة Adapter الى WearableListView .

@Override
    public void onClick(WearableListView.ViewHolder viewHolder) {
        //لتخصيص كل عنصر استخدم
        /*
        switch (viewHolder.getAdapterPosition()){
            case 0:
                break;
            case 1:
                break;
            ...
        }
         */
        Toast.makeText(this, "" + listItems.get(viewHolder.getLayoutPosition()), Toast.LENGTH_SHORT).show();

    }

دالة لتنفيذ مهمة عند الضغط على اي من عناصر القائمة .

 @Override
    public void onTopEmptyRegionClick() {

    }

هنا اذا قام المستخدم بالضغط على الفراغ الذي يسبق العنصر الاول في القائمة .

  • النتيجة :

device-2015-10-01-040716 device-2015-10-01-040727

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *