2017-07-21 43 views
1

私はリストビューのアイテムを持っています。それはtextviewとimageviewを持っています。画像ビューをクリックすると、テキストビューをクリックした後にインテントを作成しなければなりません。私は意図を作りました。リストを作成しました。しかし、2つのビューに対してリスナーを分離する方法はわかりません。私のコード XMLonItemClickListener:各ビューで2つの異なるリスナーを作成するにはどうすればよいですか?

<?xml version="1.0" encoding="utf-8"?><!-- Layout for a single list item in the list of list --> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:padding="@dimen/activity_margin" 
     android:layout_weight="1" 
     android:background="@color/colorAccent" 
     > 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:fontFamily="sans-serif-medium" 
      android:textAppearance="?android:textAppearanceMedium" 
      android:textColor="#2B3D4D" 
      /> 

     <TextView 
      android:id="@+id/summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:fontFamily="sans-serif" 
      android:textAppearance="?android:textAppearanceSmall" 
      android:textColor="#AEB6BD" /> 

    </LinearLayout> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/ic_mode_edit_black_24dp" 
     android:layout_weight="1" 
     android:id="@+id/btn_edit"/> 
</LinearLayout> 

javaの

public class CatalogActivity extends AppCompatActivity implements 
     LoaderManager.LoaderCallbacks<Cursor> { 

    /** Identifier for the pet data loader */ 
    private static final int LIST_LOADER = 0; 

    /** Adapter for the ListView */ 
    ListCursorAdapter mCursorAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_catalog); 

     // Setup FAB to open EditorActivity 
     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(CatalogActivity.this, EditorActivity.class); 
       startActivity(intent); 
      } 
     }); 

     // Find the ListView which will be populated with the list data 
     ListView listListView = (ListView) findViewById(R.id.list); 

     // Find and set empty view on the ListView, so that it only shows when the list has 0 items. 
     View emptyView = findViewById(R.id.empty_view); 
     listListView.setEmptyView(emptyView); 

     // Setup an Adapter to create a list item for each row of list data in the Cursor. 
     // There is no items data yet (until the loader finishes) so pass in null for the Cursor. 
     mCursorAdapter = new ListCursorAdapter(this, null); 
     listListView.setAdapter(mCursorAdapter); 

     // Setup the item click listener 
     listListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
       // Create new intent to go to {@link EditorActivity} 
       Intent intent = new Intent(CatalogActivity.this, EditorActivity.class); 

       // Form the content URI that represents the specific item that was clicked on, 
       // by appending the "id" (passed as input to this method) onto the 
       // {@link ListEntry#CONTENT_URI}. 
       // For example, the URI would be "content://com.example.android.list/list/2" 
       // if the pet with ID 2 was clicked on. 
       Uri currentItemUri = ContentUris.withAppendedId(ListContract.ListEntry.CONTENT_URI, id); 

       // Set the URI on the data field of the intent 
       intent.setData(currentItemUri); 

       // Launch the {@link EditorActivity} to display the data for the current pet. 
       startActivity(intent); 
      } 
     }); 

     // Kick off the loader 
     getSupportLoaderManager().initLoader(LIST_LOADER, null, this); 
    } 
+0

このリンクは役に立つhttpsのかもしれません参考になっている願っています://stackoverflow.com/a/26336736/8164071 –

+0

listListview onitemclicklistener内でif(position == 0){} if(position == 1){}を試してください。 –

+0

@HasanSaykınあなたは私に完全な例を教えてもらえますか? –

答えて

0

ザッツ

はこれを試してみてください。それはあなたを助けるかもしれません。

// Setup the item click listener 
listListView.setOnItemClickListener(new 
          AdapterView.OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View 
          view, int position, long id) { 

     View selectedView = adapterView.getSelectedView(); 
     if (selectedView instanceof ImageView) { 

     } else if (selectedView instanceof TextView) { 

     } 
    } 
}); 
+0

getSelectedViewは何をしていますか?親のメインListViewする必要がありますか? –

0

アダプタのgetView()メソッドでは、textViewとimageViewの両方でOnClickListenersを個別に設定できます。あなたはこれをすることによって、このようImageViewのとのTextViewを定義して行わでき

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //do stuff for imageview 
     } 
    }); 

textView..setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //do stuff for textview 
     } 
    }); 
+0

しかし、リストビューはonItemClick precedenceをとります –

0

このような例

最初に与えるIDS

final ImageView iv=(ImageView)emptyView.findViewById(R.id.btn_edit); 
//emptyview is your list item layout 
//similar for textview and you can now impement listner in onitemclicklistner 

listListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    iv.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

//same for textview 
} 
}); 

私はこれが

+1

私は試しました。しかし、アダプターからのIDが、そのショー・エラーの後にStaticを出すように要求しています。例外は、入力イベントをディスパッチしています。スクリーンショットhttp://joxi.ru/Grq9Rb7uNzDXBr –

+0

より最終的に –

+0

を作成しますが、それは私にヌル例外を与えます –

関連する問題