/*
* Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.danxx.mdplayer.widget.media;
import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TextView;
import com.danxx.mdplayer.R;
public class TableLayoutBinder {
private Context mContext;
public ViewGroup mTableView;
public TableLayout mTableLayout;
public TableLayoutBinder(Context context) {
this(context, R.layout.table_media_info);
}
public TableLayoutBinder(Context context, int layoutResourceId) {
mContext = context;
mTableView = (ViewGroup) LayoutInflater.from(mContext).inflate(layoutResourceId, null);
mTableLayout = (TableLayout) mTableView.findViewById(R.id.table);
}
public TableLayoutBinder(Context context, TableLayout tableLayout) {
mContext = context;
mTableView = tableLayout;
mTableLayout = tableLayout;
}
public View appendRow1(String name, String value) {
return appendRow(R.layout.table_media_info_row1, name, value);
}
public View appendRow1(int nameId, String value) {
return appendRow1(mContext.getString(nameId), value);
}
public View appendRow2(String name, String value) {
return appendRow(R.layout.table_media_info_row2, name, value);
}
public View appendRow2(int nameId, String value) {
return appendRow2(mContext.getString(nameId), value);
}
public View appendSection(String name) {
return appendRow(R.layout.table_media_info_section, name, null);
}
public View appendSection(int nameId) {
return appendSection(mContext.getString(nameId));
}
public View appendRow(int layoutId, String name, String value) {
ViewGroup rowView = (ViewGroup) LayoutInflater.from(mContext).inflate(layoutId, mTableLayout, false);
setNameValueText(rowView, name, value);
mTableLayout.addView(rowView);
return rowView;
}
public ViewHolder obtainViewHolder(View rowView) {
ViewHolder viewHolder = (ViewHolder) rowView.getTag();
if (viewHolder == null) {
viewHolder = new ViewHolder();
viewHolder.mNameTextView = (TextView) rowView.findViewById(R.id.name);
viewHolder.mValueTextView = (TextView) rowView.findViewById(R.id.value);
rowView.setTag(viewHolder);
}
return viewHolder;
}
public void setNameValueText(View rowView, String name, String value) {
ViewHolder viewHolder = obtainViewHolder(rowView);
viewHolder.setName(name);
viewHolder.setValue(value);
}
public void setValueText(View rowView, String value) {
ViewHolder viewHolder = obtainViewHolder(rowView);
viewHolder.setValue(value);
}
public ViewGroup buildLayout() {
return mTableView;
}
public AlertDialog.Builder buildAlertDialogBuilder() {
AlertDialog.Builder dlgBuilder = new AlertDialog.Builder(mContext);
dlgBuilder.setView(buildLayout());
return dlgBuilder;
}
private static class ViewHolder {
public TextView mNameTextView;
public TextView mValueTextView;
public void setName(String name) {
if (mNameTextView != null) {
mNameTextView.setText(name);
}
}
public void setValue(String value) {
if (mValueTextView != null) {
mValueTextView.setText(value);
}
}
}
}