0

水平方向にスクロール可能なHorizo​​ntalScrollViewにLinearLayoutがあります。

  <HorizontalScrollView
android:id="@+id/scrollMessageFiles"
android:layout_width="fill_parent"
android:layout_height="65dp"
android:layout_below="@+id/editMessage"
android:orientation="horizontal"
android:weightSum="1.0" >
        <LinearLayout
    android:id="@+id/panelMessageFiles"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    >

        </LinearLayout>

        </HorizontalScrollView>

次の方法で、TextViewをLinearLayoutとScrollViewにプログラムで追加します。

public void addFiles()
 {

    if(!FileManagerActivity.getFinalAttachFiles().isEmpty())
    {
             for (File file: FileManagerActivity.getFinalAttachFiles())
              {
                    View line = new View(this);
                    line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT));
                    line.setBackgroundColor(0xAA345556);
                    informationView = new TextView(this);
                    informationView.setId(102);
                    informationView.setTextColor(Color.BLACK);
                    informationView.setTextSize(12);
                    informationView.setCompoundDrawablesWithIntrinsicBounds(
                            0, R.drawable.file_icon, 0, 0);
                    informationView.setText(file.getName().toString());
                    layout.addView(informationView, 0);
                    layout.addView(line, 1);


              }

      }

}

正しく動作します。水平スクロールビューでLinearLayoutのどの項目が選択されたかを検出したい。私は次の方法でそれを行います:

layout.setOnLongClickListener(new View.OnLongClickListener() {

        public boolean onLongClick(View v) {
            final CharSequence[] items = {"Open", "Delete", "Details"};

            final AlertDialog.Builder builder = new AlertDialog.Builder(NewMessageActivity.this);
            int childCount = layout.getChildCount()/2;


            for (int i = 0; i < childCount; i++) 
            {
                final View child = layout.getChildAt(i);

                if (child instanceof TextView)
                   builder.setTitle(((TextView)child).getText().toString());
            }



            builder.setItems(items, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {

                }
            });
            AlertDialog alert = builder.create();
            alert.show();
            return false;
        }
    });

しかし、AlertBuilderのタイトルはリストの最初の項目で設定されていますが、私が選択したものではありません。選択されたアイテムを検出し、その名前をAlertDialogタイトルに設定するにはどうすればよいですか?

4

1 に答える 1

0

次のようにTextViewをLinearLayoutに追加することで、これを解決しました。

public void addFiles()
 {

    if(!FileManagerActivity.getFinalAttachFiles().isEmpty())
    {
        TextView tv[] = new TextView[FileManagerActivity.getFinalAttachFiles().size()];
             for (int i = 0; i< FileManagerActivity.getFinalAttachFiles().size();i++)
              {


                    View line = new View(this);
                    line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT));
                    line.setBackgroundColor(0xAA345556);
                    tv[i] = new TextView(this);
                    tv[i].setId(i);
                    tv[i].setTextColor(Color.BLACK);
                    tv[i].setTextSize(12);
                    tv[i].setCompoundDrawablesWithIntrinsicBounds(
                            0, R.drawable.file_icon, 0, 0);
                    tv[i].setText(FileManagerActivity.getFinalAttachFiles().get(i).getName().toString());
                    tv[i].setOnLongClickListener(onclicklistener);
                    layout.addView(tv[i], 0);
                    layout.addView(line, 1);


              }

      }



}

リストの長さと同じ長さのTextViewの配列にsetOnLongClickListenerを追加しました。私のリスナー:

OnLongClickListener onclicklistener = new OnLongClickListener() {


    public boolean onLongClick(View arg0) {
        final CharSequence[] items = {"Open", "Delete", "Details"};


        final AlertDialog.Builder builder = new AlertDialog.Builder(NewMessageActivity.this);


        builder.setTitle(((TextView)arg0).getText().toString());
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                if (item == 1)
                    {  
                       FileManagerActivity.getFinalAttachFiles().remove(item);
                       layout.invalidate();
                    }

            }
        });
        AlertDialog alert = builder.create();
        alert.show();
        return false;
    }
};

それで私の問題は解決しました。

于 2012-10-29T13:13:20.733 に答える