1

支援が必要なため、項目ごとにいくつかのテキスト フィールドと 2 つのボタン (通話ボタンとテキスト メッセージ ボタンを備えた連絡先アプリなど) を表示したいリストビュー アクティビティがあります。チュートリアルを読んで、ボタンをクリック可能にする方法を見つけました。 、しかし今、私のテキストビュー(1を除くすべて)は、レイアウトファイルに残したストックテキスト以外のデータを表示しません.1つのテキストビューには、必要なデータが表示されます.カスタムSCAのどこにも表示されません特定のデータをフィードするので、バックグラウンドで発生すると想定しています。

私の R.id.company_address_details_phone は、自分の操作なしで必要なデータをロードしますが、ViewHolder の他の TextViews にはデータが表示されません。呼び出しボタンに接続された For ループはカーソルからデータを出力するので、データが欠落しているわけではありません。ありとあらゆる助けをいただければ幸いです。

補足として、最初にコードを書き、カスタム SimpleCursorAdapter を使用しなかったとき、すべてのテキスト ビューが期待どおりに読み込まれました (ボタンをクリックできませんでした)。これにより、CompanyActivity クラスにはエラーがなく、CompanyDetailsCursroAdapter クラスに何かが欠けていると思われます。

*編集*** だから、振り返って何かを試した後、自分の質問に答えています。データが取り込まれているビューではなく、ビューの 1 つにデフォルトのテキストを設定して、DB から引き出されたかのように見せました。以下のコードを使用して、カスタム カーソル アダプターに渡されたカーソル アダプターからのデータをビューに入力しています。これが最善の方法なのか、それともより合理化された、またはAndroidで承認された方法があるのか​​ を知りたい.

            viewHolder.addressTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressStreet")));
        viewHolder.cityTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressCity")));
        viewHolder.stateTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressState")));
        viewHolder.zipTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressZip")));
        viewHolder.phoneTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressPhone")));

CompanyDetailsCursorAdapter.java

public class CompanyDetailsCursorAdapter extends SimpleCursorAdapter implements Filterable{
private final Context context;
private int layout;
Cursor companyDetailsCursor;

public CompanyDetailsCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);

    this.context = context;
    this.layout = layout;
    this.companyDetailsCursor = c;
}

static class ViewHolder {
    protected TextView addressTextView;
    protected TextView cityTextView;
    protected TextView stateTextView;
    protected TextView zipTextView;
    protected TextView phoneTextView;

    protected ImageButton callButton;
    protected ImageButton mapButton;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;

    if (convertView == null) {
        final LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.company_address_details, null);

        convertView.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {
                // TODO Auto-generated method stub

            }

        });

        viewHolder = new ViewHolder();
        viewHolder.addressTextView = (TextView) convertView.findViewById(R.id.company_address_details_street);
        viewHolder.cityTextView = (TextView) convertView.findViewById(R.id.company_address_details_city);
        viewHolder.stateTextView = (TextView) convertView.findViewById(R.id.company_address_details_state);
        viewHolder.zipTextView = (TextView) convertView.findViewById(R.id.company_address_details_zip);
        viewHolder.phoneTextView = (TextView) convertView.findViewById(R.id.company_address_details_phone);

        viewHolder.callButton = (ImageButton) convertView.findViewById(R.id.company_address_details_call_button);

        viewHolder.callButton.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {
                companyDetailsCursor.moveToPosition(position);
                if (RouteTrackerGlobal.APP_DEBUG) { Log.d(RouteTrackerGlobal.APP_TAG,"getview position set to " + String.valueOf(position));}
                for (int i = 0; i < companyDetailsCursor.getColumnCount();i++){
                    Log.i(RouteTrackerGlobal.APP_TAG, companyDetailsCursor.getString(i));
                }
            }

        });

        convertView.setTag(viewHolder);

    } else {
        viewHolder  = (ViewHolder) convertView.getTag();
    }

    return convertView;

}

会社活動.java

public class CompanyActivity extends ListActivity {
DbAdapter dbAdapter;
int companyID;

Context context = this;

Cursor companyDetailsCursor;
@Override
public void onCreate(Bundle savedInstanceBundle) {
    super.onCreate(savedInstanceBundle);

    dbAdapter = new DbAdapter(this);

    setContentView(R.layout.company_activity);

    Bundle companyActivityBundle = getIntent().getExtras();

    companyID = companyActivityBundle.getInt("CompanyID");

    ListView list = getListView();

    list.setOnItemLongClickListener(new OnItemLongClickListener(){

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            return false;
        }

    });
}

@Override
public void onPause() {
    dbAdapter.close();
    super.onPause();
}

@Override
public void onResume() {
    dbAdapter.open();
    super.onResume();
    loadDetails();
}

@Override
protected void onListItemClick (ListView l, View v, int position, long id){
    //TODO: When item in list clicked, call activity to display address and directions
}

public void loadDetails() {
    TextView companyLabel = (TextView) findViewById(R.id.company_activity_company_label);

    companyDetailsCursor = dbAdapter.getCompanyDetails(companyID);
    startManagingCursor(companyDetailsCursor);

    companyDetailsCursor.moveToFirst();

    companyLabel.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("CompanyName")));

    String[] columns = new String[] {"AddressPhone", "AddressStreet", "AddressCity", "AddressState", "AddressZip"};
    int[] to = new int[] {R.id.company_address_details_phone, R.id.company_address_details_street, R.id.company_address_details_city, R.id.company_address_details_state, R.id.company_address_details_zip};

    CompanyDetailsCursorAdapter companyDetailsAdapter = new CompanyDetailsCursorAdapter(context, R.layout.company_address_details, companyDetailsCursor, columns, to);
    setListAdapter(companyDetailsAdapter);


}

}

Company_Address_Details.xml

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/company_address_details_phone"
            style="@style/company_address_listview"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="@string/company_address_details_phone_default" />
        <ImageButton android:id="@+id/company_address_details_call_button"
            style="@style/company_address_listview"
            android:layout_alignParentRight="true"
            android:layout_centerInParent="true"
            android:background="@android:color/transparent"
            android:src="@android:drawable/sym_action_call"
            android:contentDescription="@string/company_address_details_phone_hint"/>
    </RelativeLayout>


    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/company_address_details_call_button1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/company_address_details_street"
                    style="@style/company_address_listview"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/company_address_details_street_default" />
            </LinearLayout>


            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >



                <TextView
                    android:id="@+id/company_address_details_city"
                    style="@style/company_address_listview"
                    android:layout_width="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:text="@string/company_address_details_city_default" />



                <TextView
                    android:id="@+id/company_address_details_state"
                    style="@style/company_address_listview"
                    android:layout_centerInParent="true"
                    android:layout_centerVertical="true"
                    android:text="@string/company_address_details_state_default" />



                <TextView
                    android:id="@+id/company_address_details_zip"
                    style="@style/company_address_listview"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:text="@string/company_address_details_zip_default" />

            </RelativeLayout>

        </LinearLayout>







        <ImageButton
            android:id="@+id/company_address_details_call_button1"
            style="@style/company_address_listview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerHorizontal="false"
            android:layout_centerInParent="false"
            android:layout_centerVertical="true"
            android:background="@android:color/transparent"
            android:contentDescription="@string/company_address_details_phone_hint"
            android:paddingLeft="20dp"
            android:src="@android:drawable/ic_dialog_map" />

    </RelativeLayout>

</LinearLayout>
4

0 に答える 0